]> pilppa.org Git - linux-2.6-omap-h63xx.git/log
linux-2.6-omap-h63xx.git
17 years agox86: move dma_unmap_single to common header
Glauber Costa [Tue, 25 Mar 2008 21:36:22 +0000 (18:36 -0300)]
x86: move dma_unmap_single to common header

i386 base does not need it, so it gets an empty function.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: implement dma_map_single through dma_ops
Glauber Costa [Tue, 25 Mar 2008 21:36:21 +0000 (18:36 -0300)]
x86: implement dma_map_single through dma_ops

That's already the name of the game for x86_64. For i386,
we add a pci-base_32.c, that will hold the default operations.
The function call itself goes through dma-mapping.h , the common
header

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: move dma_ops struct definition to dma-mapping.h
Glauber Costa [Tue, 25 Mar 2008 21:36:20 +0000 (18:36 -0300)]
x86: move dma_ops struct definition to dma-mapping.h

take it off the x86_64 specific header

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: reserve dma32 early for gart
Yinghai Lu [Fri, 7 Mar 2008 23:02:50 +0000 (15:02 -0800)]
x86: reserve dma32 early for gart

a system with 256 GB of RAM, when NUMA is disabled crashes the
following way:

Your BIOS doesn't leave a aperture memory hole
Please enable the IOMMU option in the BIOS setup
This costs you 64 MB of RAM
Cannot allocate aperture memory hole (ffff8101c0000000,65536K)
Kernel panic - not syncing: Not enough memory for aperture
Pid: 0, comm: swapper Not tainted 2.6.25-rc4-x86-latest.git #33

Call Trace:
 [<ffffffff84037c62>] panic+0xb2/0x190
 [<ffffffff840381fc>] ? release_console_sem+0x7c/0x250
 [<ffffffff847b1628>] ? __alloc_bootmem_nopanic+0x48/0x90
 [<ffffffff847b0ac9>] ? free_bootmem+0x29/0x50
 [<ffffffff847ac1f7>] gart_iommu_hole_init+0x5e7/0x680
 [<ffffffff847b255b>] ? alloc_large_system_hash+0x16b/0x310
 [<ffffffff84506a2f>] ? _etext+0x0/0x1
 [<ffffffff847a2e8c>] pci_iommu_alloc+0x1c/0x40
 [<ffffffff847ac795>] mem_init+0x45/0x1a0
 [<ffffffff8479ff35>] start_kernel+0x295/0x380
 [<ffffffff8479f1c2>] _sinittext+0x1c2/0x230

the root cause is : memmap PMD is too big,
[ffffe200e0600000-ffffe200e07fffff] PMD ->ffff81383c000000 on node 0
almost near 4G..., and vmemmap_alloc_block will use up the ram under 4G.

solution will be:
1. make memmap allocation get memory above 4G...
2. reserve some dma32 range early before we try to set up memmap for all.
and release that before pci_iommu_alloc, so gart or swiotlb could get some
range under 4g limit for sure.

the patch is using method 2.
because method1 may need more code to handle SPARSEMEM and SPASEMEM_VMEMMAP

will get
Your BIOS doesn't leave a aperture memory hole
Please enable the IOMMU option in the BIOS setup
This costs you 64 MB of RAM
Mapping aperture over 65536 KB of RAM @ 4000000
Memory: 264245736k/268959744k available (8484k kernel code, 4187464k reserved, 4004k data, 724k init)

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agosrat, x86: add support for nodes spanning other nodes
Suresh Siddha [Tue, 25 Mar 2008 17:14:35 +0000 (10:14 -0700)]
srat, x86: add support for nodes spanning other nodes

For example, If the physical address layout on a two node system with 8 GB
memory is something like:
node 0: 0-2GB, 4-6GB
node 1: 2-4GB, 6-8GB

Current kernels fail to boot/detect this NUMA topology.

ACPI SRAT tables can expose such a topology which needs to be supported.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86 vDSO: compile with -g, 64-bit
Roland McGrath [Mon, 14 Apr 2008 19:19:30 +0000 (12:19 -0700)]
x86 vDSO: compile with -g, 64-bit

The 64-bit vDSO's sources are compiled with -g0 for no good reason.
Using -g when enabled lets their separate debug files be used at
runtime via build ID matching, same as we can see 32-bit vDSO's
assembly sources.

Signed-off-by: Roland McGrath <roland@redhat.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: fpu xstate split fix
Suresh Siddha [Wed, 16 Apr 2008 08:25:35 +0000 (10:25 +0200)]
x86: fpu xstate split fix

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: fpu xstate split cleanup
Suresh Siddha [Wed, 16 Apr 2008 08:27:53 +0000 (10:27 +0200)]
x86: fpu xstate split cleanup

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86, fpu: lazy allocation of FPU area - v5
Suresh Siddha [Mon, 10 Mar 2008 22:28:05 +0000 (15:28 -0700)]
x86, fpu: lazy allocation of FPU area - v5

Only allocate the FPU area when the application actually uses FPU, i.e., in the
first lazy FPU trap. This could save memory for non-fpu using apps.

for example: on my system after boot, there are around 300 processes, with
only 17 using FPU.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86, fpu: split FPU state from task struct - v5
Suresh Siddha [Mon, 10 Mar 2008 22:28:04 +0000 (15:28 -0700)]
x86, fpu: split FPU state from task struct - v5

Split the FPU save area from the task struct. This allows easy migration
of FPU context, and it's generally cleaner. It also allows the following
two optimizations:

1) only allocate when the application actually uses FPU, so in the first
lazy FPU trap. This could save memory for non-fpu using apps. Next patch
does this lazy allocation.

2) allocate the right size for the actual cpu rather than 512 bytes always.
Patches enabling xsave/xrstor support (coming shortly) will take advantage
of this.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: rename find_max_pfn() to propagate_e820_map()
Ingo Molnar [Wed, 16 Apr 2008 00:29:42 +0000 (02:29 +0200)]
x86: rename find_max_pfn() to propagate_e820_map()

this function doesnt just 'find' the max_pfn - it also has
other side-effects such as registering sparse memory maps.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: tsc prevent time going backwards
Thomas Gleixner [Tue, 1 Apr 2008 17:45:18 +0000 (19:45 +0200)]
x86: tsc prevent time going backwards

We already catch most of the TSC problems by sanity checks, but there
is a subtle bug which has been in the code forever. This can cause
time jumps in the range of hours.

This was reported in:
     http://lkml.org/lkml/2007/8/23/96
and
     http://lkml.org/lkml/2008/3/31/23

I was able to reproduce the problem with a gettimeofday loop test on a
dual core and a quad core machine which both have sychronized
TSCs. The TSCs seems not to be perfectly in sync though, but the
kernel is not able to detect the slight delta in the sync check. Still
there exists an extremly small window where this delta can be observed
with a real big time jump. So far I was only able to reproduce this
with the vsyscall gettimeofday implementation, but in theory this
might be observable with the syscall based version as well.

CPU 0 updates the clock source variables under xtime/vyscall lock and
CPU1, where the TSC is slighty behind CPU0, is reading the time right
after the seqlock was unlocked.

The clocksource reference data was updated with the TSC from CPU0 and
the value which is read from TSC on CPU1 is less than the reference
data. This results in a huge delta value due to the unsigned
subtraction of the TSC value and the reference value. This algorithm
can not be changed due to the support of wrapping clock sources like
pm timer.

The huge delta is converted to nanoseconds and added to xtime, which
is then observable by the caller. The next gettimeofday call on CPU1
will show the correct time again as now the TSC has advanced above the
reference value.

To prevent this TSC specific wreckage we need to compare the TSC value
against the reference value and return the latter when it is larger
than the actual TSC value.

I pondered to mark the TSC unstable when the readout is smaller than
the reference value, but this would render an otherwise good and fast
clocksource unusable without a real good reason.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agogeneric, x86: add tests for prctl PR_GET_TSC and PR_SET_TSC
Erik Bosman [Fri, 11 Apr 2008 16:57:22 +0000 (18:57 +0200)]
generic, x86: add tests for prctl PR_GET_TSC and PR_SET_TSC

This patch adds three tests that test whether the PR_GET_TSC and
PR_SET_TSC commands have the desirable effect.

The tests check whether the control register is updated correctly
at context switches and try to discover bugs while enabling/disabling
the timestamp counter.

Signed-off-by: Erik Bosman <ejbosman@cs.vu.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: implement prctl PR_GET_TSC and PR_SET_TSC
Erik Bosman [Sun, 13 Apr 2008 22:24:18 +0000 (00:24 +0200)]
x86: implement prctl PR_GET_TSC and PR_SET_TSC

This patch implements the PR_GET_TSC and PR_SET_TSC prctl()
commands on the x86 platform (both 32 and 64 bit.) These
commands control the ability to read the timestamp counter
from userspace (the RDTSC instruction.)

While the RDTSC instuction is a useful profiling tool,
it is also the source of some non-determinism in ring-3.
For deterministic replay applications it is useful to be
able to trap and emulate (and record the outcome of) this
instruction.

This patch uses code earlier used to disable the timestamp
counter for the SECCOMP framework. A side-effect of this
patch is that the SECCOMP environment will now also disable
the timestamp counter on x86_64 due to the addition of the
TIF_NOTSC define on this platform.

The code which enables/disables the RDTSC instruction during
context switches is in the __switch_to_xtra function, which
already handles other unusual conditions, so normal
performance should not have to suffer from this change.

Signed-off-by: Erik Bosman <ejbosman@cs.vu.nl>
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agogeneric, x86: add prctl commands PR_GET_TSC and PR_SET_TSC
Erik Bosman [Fri, 11 Apr 2008 16:54:17 +0000 (18:54 +0200)]
generic, x86: add prctl commands PR_GET_TSC and PR_SET_TSC

This patch adds prctl commands that make it possible
to deny the execution of timestamp counters in userspace.
If this is not implemented on a specific architecture,
prctl will return -EINVAL.

ned-off-by: Erik Bosman <ejbosman@cs.vu.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agoftrace: add notrace annotations for NMI routines
Steven Rostedt [Sat, 19 Apr 2008 17:19:55 +0000 (19:19 +0200)]
ftrace: add notrace annotations for NMI routines

This annotates NMI functions with notrace. Some tracers may be able
to live with this, but some cannot. The safest is to turn it off,
it's not particularly interesting anyway.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: clean up =0 initializations in arch/x86/kernel/tsc_32.c
Pavel Machek [Tue, 19 Feb 2008 10:02:30 +0000 (11:02 +0100)]
x86: clean up =0 initializations in arch/x86/kernel/tsc_32.c

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: fix exec mappings comments
Jiri Slaby [Sat, 12 Apr 2008 08:28:25 +0000 (10:28 +0200)]
x86: fix exec mappings comments

- noexec32 is on by default for years already
- add noexec32 to kernel-parameters and fix noexec typo in there

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: cleanup: change _end to end_before_pgt
Yinghai Lu [Thu, 10 Apr 2008 22:06:38 +0000 (15:06 -0700)]
x86: cleanup: change _end to end_before_pgt

cleanup: change the _end in compressed vmlinux_64.lds.

also change _heap to _ebss that is not needed.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: cleanup boot-heap usage
Alexander van Heukelum [Tue, 8 Apr 2008 10:54:30 +0000 (12:54 +0200)]
x86: cleanup boot-heap usage

The kernel decompressor wrapper uses memory located beyond the
end of the image. This might lead to hard to debug problems,
but even if it can be proven to be safe, it is at the very
least unclean. I don't see any advantages either, unless you
count it not being zeroed out as an advantage. This patch
moves the boot-heap area to the bss segment.

Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: fix arch/x86/mm/ioremap.c warning
Randy Dunlap [Thu, 10 Apr 2008 22:09:50 +0000 (15:09 -0700)]
x86: fix arch/x86/mm/ioremap.c warning

Fix printk formats in x86/mm/ioremap.c:

next-20080410/arch/x86/mm/ioremap.c:137: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'resource_size_t'
next-20080410/arch/x86/mm/ioremap.c:188: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'resource_size_t'
next-20080410/arch/x86/mm/ioremap.c:188: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'long unsigned int'

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: e820_64, fix section mismatch warning
Jacek Luczak [Thu, 10 Apr 2008 11:40:57 +0000 (13:40 +0200)]
x86: e820_64, fix section mismatch warning

fix section mismatch warnings which occurs on my x86_64 box while compiling
linux-next-20080410:

Warning messages:

WARNING: arch/x86/kernel/built-in.o(.text+0x7bc2): Section mismatch in reference from the function bad_addr() to the
variable .init.data:early_res
The function bad_addr() references
the variable __initdata early_res.
This is often because bad_addr lacks a __initdata
annotation or the annotation of early_res is wrong.

WARNING: arch/x86/kernel/built-in.o(.text+0x7c3b): Section mismatch in reference from the function bad_addr_size() to
the variable .init.data:early_res
The function bad_addr_size() references
the variable __initdata early_res.
This is often because bad_addr_size lacks a __initdata
annotation or the annotation of early_res is wrong.

Signed-off-by: Jacek Luczak <luczak.jacek@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: remove vm86.h inclusion from process_32.c
Jacek Luczak [Wed, 9 Apr 2008 20:53:50 +0000 (22:53 +0200)]
x86: remove vm86.h inclusion from process_32.c

I've made a small investigation about vm86.h inclusion rules and it
looks like everything is more or less ok.

Files that rely on asm/vm86.h symbols are:

  - kprobes.c
  - process_32.c
  - signal_32.c
  - traps_32.c
  - vm86_32.c

File process_32.c includes vm86.h explicitly. We can remove that
include and it won't break anything.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: remove pointless comments
WANG Cong [Sat, 8 Mar 2008 10:15:06 +0000 (18:15 +0800)]
x86: remove pointless comments

Remove old comments that include the old arch/i386 directory.

Signed-off-by: WANG Cong <xiyou.wangcong@gmail.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: pageattr.c fix shadowed variable warning
Harvey Harrison [Wed, 5 Mar 2008 06:05:27 +0000 (22:05 -0800)]
x86: pageattr.c fix shadowed variable warning

irqs_disabled() uses flags internally, use _flags to avoid shadowing
code calling into this macro.

Introduced between 2.6.25-rc3 and -rc4

Fixes the sparse warning:
arch/x86/mm/pageattr.c:383:21: warning: symbol 'flags' shadows an earlier one
arch/x86/mm/pageattr.c:369:16: originally declared here

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: clean up cpu capabilities accesses, p4-clockmod.c
Ingo Molnar [Tue, 26 Feb 2008 07:52:16 +0000 (08:52 +0100)]
x86: clean up cpu capabilities accesses, p4-clockmod.c

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86_64: do not reserve ramdisk two times
Yinghai Lu [Tue, 18 Mar 2008 19:51:22 +0000 (12:51 -0700)]
x86_64: do not reserve ramdisk two times

ramdisk is reserved via reserve_early in x86_64_start_kernel,
later early_res_to_bootmem() will convert to reservation in bootmem.

so don't need to reserve that again.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: EFI_PAGE_SHIFT fix
Huang, Ying [Mon, 25 Feb 2008 07:18:37 +0000 (15:18 +0800)]
x86: EFI_PAGE_SHIFT fix

Make x86 EFI code works when EFI_PAGE_SHIFT != PAGE_SHIFT. The
memrage_efi_to_native() provided in this patch can be used on other
EFI platform such as IA64 too.

This patch has been tested on Intel x86_64 platform with EFI 64/32
firmware.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
17 years agox86: KGDB build fix
Ingo Molnar [Sat, 19 Apr 2008 17:19:54 +0000 (19:19 +0200)]
x86: KGDB build fix

Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agoMerge branch 'merge-fixes' into devel
Russell King [Sat, 19 Apr 2008 16:17:34 +0000 (17:17 +0100)]
Merge branch 'merge-fixes' into devel

17 years agoMerge branch 'omap2-upstream' into devel
Russell King [Sat, 19 Apr 2008 16:17:29 +0000 (17:17 +0100)]
Merge branch 'omap2-upstream' into devel

17 years agoMerge branches 'arm', 'at91', 'ep93xx', 'iop', 'ks8695', 'misc', 'mxc', 'ns9x', ...
Russell King [Sat, 19 Apr 2008 16:17:25 +0000 (17:17 +0100)]
Merge branches 'arm', 'at91', 'ep93xx', 'iop', 'ks8695', 'misc', 'mxc', 'ns9x', 'orion', 'pxa', 'sa1100', 's3c' and 'sparsemem' into devel

17 years ago[ARM] pxa: Phycore pcm-990-specific code for the PXA270 Quick Capture driver
Guennadi Liakhovetski [Sun, 6 Apr 2008 21:08:15 +0000 (23:08 +0200)]
[ARM] pxa: Phycore pcm-990-specific code for the PXA270 Quick Capture driver

Platform-specific code for Phytec's phyCORE-PXA270 platform

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: V4L2 soc_camera driver for PXA270
Guennadi Liakhovetski [Fri, 11 Apr 2008 20:19:45 +0000 (22:19 +0200)]
[ARM] pxa: V4L2 soc_camera driver for PXA270

This patch adds a driver for the Quick Capture Interface on the PXA270.
It is based on the original driver from Intel, but has been re-worked
multiple times since then, now it also supports the V4L2 API.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: restrict availability of pxa2xx PCMCIA drivers
Russell King [Sat, 19 Apr 2008 15:46:54 +0000 (16:46 +0100)]
[ARM] pxa: restrict availability of pxa2xx PCMCIA drivers

Not all PXA2xx platforms provide the necessary support files for
PCMCIA to work, let alone build.  Stop the build errors by making
PXA2xx PCMCIA support only available on those platforms which have
supplied the support files.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 5005/1: BAST: Fix kset_name initialiser
Ben Dooks [Sat, 19 Apr 2008 12:08:43 +0000 (13:08 +0100)]
[ARM] 5005/1: BAST: Fix kset_name initialiser

Fix the pm sys device .name initialiser which was
missed when updating the last patch submission.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4967/1: Adds functions to set clkout rate for Samsung S3C2410
Davide Rizzo [Sat, 12 Apr 2008 14:08:15 +0000 (15:08 +0100)]
[ARM] 4967/1: Adds functions to set clkout rate for Samsung S3C2410

This patch adds functions to set clkout rate for Samsung S3C2410
This patch supersedes 4884/1, that contained an error

Comments from Ben Dooks:

 Note, looks like this needs to be applied before 4882/1

Signed-off-by: Davide Rizzo <davide@elpa.it>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4988/1: Add GPIO lib support to the EP93xx
Ryan Mallon [Wed, 16 Apr 2008 01:56:35 +0000 (02:56 +0100)]
[ARM] 4988/1: Add GPIO lib support to the EP93xx

Adds support for the generic GPIO lib to the EP93xx family. The gpio
handling code has been moved from core.c to a new file called gpio.c.
The GPIO based IRQ code has not been changed.

Signed-off-by: Ryan Mallon <ryan@bluewatersys.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] Add initial sparsemem support
Russell King [Thu, 30 Nov 2006 20:43:51 +0000 (20:43 +0000)]
[ARM] Add initial sparsemem support

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: initialise PXA devices before platform init code
Russell King [Sat, 19 Apr 2008 09:59:24 +0000 (10:59 +0100)]
[ARM] pxa: initialise PXA devices before platform init code

Initialise PXA devices before platform initialisation, so that
platforms can parent devices to these.

Acked-by: eric miao <ymiao3@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 5002/1: tosa: add two more leds
Dmitry Baryshkov [Sat, 19 Apr 2008 09:42:06 +0000 (10:42 +0100)]
[ARM] 5002/1: tosa: add two more leds

This adds support for two more leds:
the wlan one (found in SL-6000W and SL-6000L) and
the blutooth one (found in SL-6000W).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 5004/1: Tosa: make several unreferenced structures static.
Dmitry Baryshkov [Sat, 19 Apr 2008 09:42:25 +0000 (10:42 +0100)]
[ARM] 5004/1: Tosa: make several unreferenced structures static.

Now that scoop gpio's are converted to generic_gpio,
tosascoop_device and tosascoop_jc_device don't have
to be exported.

Also make tosa_gpio_* static

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 5003/1: Shut up sparse warnings
Dmitry Baryshkov [Sat, 19 Apr 2008 09:42:18 +0000 (10:42 +0100)]
[ARM] 5003/1: Shut up sparse warnings

Shut up sparse warnings by making GPIO_IRQ_MASK unisgned

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4977/2: soc - pxa2xx-ac97 - Add missing clk_enable()
Mark Brown [Tue, 15 Apr 2008 15:12:44 +0000 (16:12 +0100)]
[ARM] 4977/2: soc - pxa2xx-ac97 - Add missing clk_enable()

Add missing clk_enable()

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4976/1: zylonite: Configure GPIO for WM9713 IRQ line
Mark Brown [Tue, 15 Apr 2008 14:50:49 +0000 (15:50 +0100)]
[ARM] 4976/1: zylonite: Configure GPIO for WM9713 IRQ line

Set up the IRQ line for the WM9713 device on the Zylonite.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4974/1: Drop unused leds-tosa.
Dmitry Baryshkov [Sat, 12 Apr 2008 20:26:39 +0000 (21:26 +0100)]
[ARM] 4974/1: Drop unused leds-tosa.

As now tosa uses leds-gpio, drop leds-tosa driver.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4973/1: Tosa: use leds-gpio driver.
Dmitry Baryshkov [Sat, 12 Apr 2008 19:17:02 +0000 (20:17 +0100)]
[ARM] 4973/1: Tosa: use leds-gpio driver.

Now as the scoop pins are covered by the generic gpio API,
we can use leds-gpio driver instead of special leds-tosa.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4972/1: Tosa: convert scoop GPIOs usage to generic gpio code
Dmitry Baryshkov [Sat, 12 Apr 2008 19:16:16 +0000 (20:16 +0100)]
[ARM] 4972/1: Tosa: convert scoop GPIOs usage to generic gpio code

Convert set/reset_scoop_gpio to generic gpio calls.
This patch depends on the pxaficp_ir hooks patch.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4971/1: pxaficp_ir: provide startup and shutdown hooks
Dmitry Baryshkov [Sat, 12 Apr 2008 19:08:16 +0000 (20:08 +0100)]
[ARM] 4971/1: pxaficp_ir: provide startup and shutdown hooks

Let platform do some specific initialisation and cleanup
things during pxaficp_ir probing and removing. E.g. this
can be usefull to request/free gpios used by the platform
to control the transceiver.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: lubbock: move mis-placed SPI info
Russell King [Sun, 13 Apr 2008 16:38:55 +0000 (17:38 +0100)]
[ARM] pxa: lubbock: move mis-placed SPI info

The SPI information got placed in the middle of the SMC91x data.
Lets move it up a few lines so that we keep related things grouped
together.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4970/1: tosa: correct gpio used for wake up.
Dmitry Baryshkov [Sat, 12 Apr 2008 19:02:50 +0000 (20:02 +0100)]
[ARM] 4970/1: tosa: correct gpio used for wake up.

TOSA_GPIO_ON_KEY can't wakeup the device. But the board
provides TOSA_GPIO_POWERON which is OR of (on_ac) and (on_button).
Use it for wake up.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4966/1: magician: add MFP pin configuration
Philipp Zabel [Sat, 12 Apr 2008 12:29:22 +0000 (13:29 +0100)]
[ARM] 4966/1: magician: add MFP pin configuration

Although the GPIO alternate functions should be correctly set
by the bootloader, configure them here to be sure.
To save power, FFUART/BTUART/STUART are left unconfigured (output, low)
until they are needed by pxaficp or the magician GSM chipset driver.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4965/1: magician: use htc-pasic3,leds-pasic3,ds1wm,leds-gpio
Philipp Zabel [Sat, 12 Apr 2008 12:28:02 +0000 (13:28 +0100)]
[ARM] 4965/1: magician: use htc-pasic3,leds-pasic3,ds1wm,leds-gpio

This patch enables LEDs and the 1-wire bus (connected to
a DS2760 battery monitor) on the magician.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4964/1: htc-pasic3: MFD driver for PASIC3 LED control + DS1WM chip
Philipp Zabel [Sat, 12 Apr 2008 12:25:41 +0000 (13:25 +0100)]
[ARM] 4964/1: htc-pasic3: MFD driver for PASIC3 LED control + DS1WM chip

This driver will provide registers, clocks and GPIOs of
the HTC PASIC3 (AIC3) and PASIC2 (AIC2) chips to the
ds1wm and leds-pasic3 drivers.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4958/2: tosa: fix i2c registration.
Dmitry Baryshkov [Thu, 10 Apr 2008 14:43:18 +0000 (15:43 +0100)]
[ARM] 4958/2: tosa: fix i2c registration.

Add a call to pxa_set_i2c_info() to force i2c registration

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4960/1: Rewrite tosa pin configuration to use MFP tables.
Dmitry Baryshkov [Thu, 10 Apr 2008 10:00:32 +0000 (11:00 +0100)]
[ARM] 4960/1: Rewrite tosa pin configuration to use MFP tables.

Clean up all pins configuration to use currently proposed MFP table
schema.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4959/1: PXA: Fix misprint in CICR1_RGBT_CONV
Mike Rapoport [Thu, 10 Apr 2008 05:34:29 +0000 (06:34 +0100)]
[ARM] 4959/1: PXA: Fix misprint in CICR1_RGBT_CONV

This patch fixes misprint in definition of CICR1_RGBT_CONV in include/asm-arm/arch-pxa/pxa-regs.h

Signed-off-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4953/1: magician: add backlight power switching GPIOs
Philipp Zabel [Wed, 9 Apr 2008 18:28:53 +0000 (19:28 +0100)]
[ARM] 4953/1: magician: add backlight power switching GPIOs

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4952/1: magician: add LCD detection, LCD power switching, update pxafb settings
Philipp Zabel [Wed, 9 Apr 2008 18:27:10 +0000 (19:27 +0100)]
[ARM] 4952/1: magician: add LCD detection, LCD power switching, update pxafb settings

All magician devices I've encountered so far have featured the Toppoly
TD028STEB1 display, so the Samsung LTP280QV support is untested.
The power-on sequence is not correct because pxafb doesn't yet support
enabling the LCD controller in the middle of the it.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4951/1: magician: enable external power supply (pda_power) driver
Philipp Zabel [Wed, 9 Apr 2008 18:25:56 +0000 (19:25 +0100)]
[ARM] 4951/1: magician: enable external power supply (pda_power) driver

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4950/1: magician: enable MMC support
Philipp Zabel [Wed, 9 Apr 2008 18:24:55 +0000 (19:24 +0100)]
[ARM] 4950/1: magician: enable MMC support

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4949/1: magician: enable flash VPP GPIO and build in MTD, physmap-flash and...
Philipp Zabel [Wed, 9 Apr 2008 18:24:05 +0000 (19:24 +0100)]
[ARM] 4949/1: magician: enable flash VPP GPIO and build in MTD, physmap-flash and JFFS2

This enables rootfs on StrataFlash if the bootloader supplies the
partition list.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4948/1: magician: use htc-egpio to drive the GPIO/IRQ expander CPLD
Philipp Zabel [Wed, 9 Apr 2008 18:22:57 +0000 (19:22 +0100)]
[ARM] 4948/1: magician: use htc-egpio to drive the GPIO/IRQ expander CPLD

needed for power management (audio, BT, charging, GSM, LCD, SD), GSM, flash and SD operation and audio routing.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4947/1: htc-egpio, a driver for GPIO/IRQ expanders with fixed input/output...
Philipp Zabel [Wed, 9 Apr 2008 18:20:34 +0000 (19:20 +0100)]
[ARM] 4947/1: htc-egpio, a driver for GPIO/IRQ expanders with fixed input/output pins

implemented in CPLD chips on several HTC devices.

The original driver was written by Kevin O'Connor, I have adapted it to
use gpiolib and made the bus/register widths configurable.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4944/2: magician: enable i2c bus
Philipp Zabel [Wed, 9 Apr 2008 18:14:15 +0000 (19:14 +0100)]
[ARM] 4944/2: magician: enable i2c bus

Since recent PXA changes the (non-power-)I2C bus has to be explicitly
enabled from board initialisation code.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4943/2: magician: fix magician.h GPIO header includes
Philipp Zabel [Wed, 9 Apr 2008 18:11:52 +0000 (19:11 +0100)]
[ARM] 4943/2: magician: fix magician.h GPIO header includes

PXA GPIO definitions were split from pxa-regs.h into pxa2xx-gpio.h.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4942/1: magician: fix the backlight driver name
Philipp Zabel [Tue, 8 Apr 2008 18:36:06 +0000 (19:36 +0100)]
[ARM] 4942/1: magician: fix the backlight driver name

corgi_bl was renamed to generic_bl.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4941/1: Add initial defconfig for HTC Magician PDA phones
Philipp Zabel [Tue, 8 Apr 2008 18:35:18 +0000 (19:35 +0100)]
[ARM] 4941/1: Add initial defconfig for HTC Magician PDA phones

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4946/1: pxa3xx: Print an error if we refuse to suspend
Mark Brown [Wed, 9 Apr 2008 10:32:21 +0000 (11:32 +0100)]
[ARM] 4946/1: pxa3xx: Print an error if we refuse to suspend

The PXA3xx will not suspend if there are no wakeup sources configured.
Print a diagnostic message to make it easier for the user to see what's
happening.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4901/3: mainstone: Register primary I2C bus
Mark Brown [Mon, 7 Apr 2008 16:16:34 +0000 (17:16 +0100)]
[ARM] 4901/3: mainstone: Register primary I2C bus

Mainstone has the primary I2C bus exposed for use on plugin modules.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4867/1: Adds flash, udc, mci support for gumstix F boards
Jaya Kumar [Sat, 15 Mar 2008 04:11:07 +0000 (05:11 +0100)]
[ARM] 4867/1: Adds flash, udc, mci support for gumstix F boards

This patch implements support for Gumstix-F flash, udc and mci. Fixes since the last time are:
- Steve Sakoman as maintainer
- cleanup for udc and mci setup

Signed-off-by: Jaya Kumar <jayakumar.lkml@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: remove keypad register definitions from pxa-regs.h
eric miao [Fri, 22 Feb 2008 05:48:15 +0000 (13:48 +0800)]
[ARM] pxa: remove keypad register definitions from pxa-regs.h

Keypad registers are now fully defined within pxa27x-keypad.c, no
need to keep those definitions in pxa-regs.h

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: add keypad support for littleton
eric miao [Wed, 23 Jan 2008 07:07:22 +0000 (15:07 +0800)]
[ARM] pxa: add keypad support for littleton

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: add keypad support for zylonite
eric miao [Wed, 23 Jan 2008 06:25:50 +0000 (14:25 +0800)]
[ARM] pxa: add keypad support for zylonite

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: add partial keypad support for mainstone
eric miao [Wed, 23 Jan 2008 06:25:27 +0000 (14:25 +0800)]
[ARM] pxa: add partial keypad support for mainstone

This is partial because mainstone's keypad is really special, some of
the keys like '1', '2', ... are actually connected to two row/column
juntions, thus pressing '1' is equivalent to pressing 'A' & 'H'.

This is really brain damanged since it makes distinguishing between
pressing '1' and multiple keys pressing of 'A' & 'H' difficult.

So these special keys are not supported for the time being.

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: add pxa27x_keypad device and pxa_set_keypad_info()
eric miao [Wed, 23 Jan 2008 05:39:13 +0000 (13:39 +0800)]
[ARM] pxa: add pxa27x_keypad device and pxa_set_keypad_info()

also update the clk definitions in pxa27x and pxa3xx.

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: use gpio_keys.c to support mainstone's wakeup switch of GPIO1
eric miao [Tue, 11 Mar 2008 02:06:38 +0000 (10:06 +0800)]
[ARM] pxa: use gpio_keys.c to support mainstone's wakeup switch of GPIO1

NOTE: currently don't know if the key code of KEY_SUSPEND is fit for
such usage.

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: allow dynamic enable/disable of GPIO wakeup for pxa{25x,27x}
eric miao [Tue, 11 Mar 2008 01:46:28 +0000 (09:46 +0800)]
[ARM] pxa: allow dynamic enable/disable of GPIO wakeup for pxa{25x,27x}

Changes include:

1. rename MFP_LPM_WAKEUP_ENABLE into MFP_LPM_CAN_WAKEUP to indicate
   the board capability of this pin to wakeup the system

2. add gpio_set_wake() and keypad_set_wake() to allow dynamically
   enable/disable wakeup from GPIOs and keypad GPIO

   * these functions are currently kept in mfp-pxa2xx.c due to their
     dependency to the MFP configuration

3. pxa2xx_mfp_config() only gives early warning if MFP_LPM_CAN_WAKEUP
   is set on incorrect pins

So that the GPIO's wakeup capability is now decided by the following:

   a) processor's capability: (only those GPIOs which have dedicated
      bits within PWER/PRER/PFER can wakeup the system), this is
      initialized by pxa{25x,27x}_init_mfp()

   b) board design decides:
      - whether the pin is designed to wakeup the system (some of
        the GPIOs are configured as other functions, which is not
        intended to be a wakeup source), by OR'ing the pin config
        with MFP_LPM_CAN_WAKEUP

      - which edge the pin is designed to wakeup the system, this
        may depends on external peripherals/connections, which is
        totally board specific; this is indicated by MFP_LPM_EDGE_*

   c) the corresponding device's (most likely the gpio_keys.c) wakeup
      attribute:

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: use new pin configuration mechanism for lubbock
eric miao [Wed, 13 Feb 2008 00:52:38 +0000 (08:52 +0800)]
[ARM] pxa: use new pin configuration mechanism for lubbock

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: use new pin configuration mechanism for mainstone
eric miao [Mon, 4 Feb 2008 09:15:50 +0000 (17:15 +0800)]
[ARM] pxa: use new pin configuration mechanism for mainstone

1. the following code to configure PGSRx is no way portable and
   intuitive:

- PGSR0 = 0x00008800;
-       PGSR1 = 0x00000002;
-       PGSR2 = 0x0001FC00;
-       PGSR3 = 0x00001F81;

   this is removed as low power state has already been encoded in
   the pin configuration definitions.

   Note: there is no specific reason for some of the GPIOs to drive
   high in low power mode as indicated by the above setting, those
   bits are ignored, and the result is validated to work.

2. the following code to configure GPIO wakeup is removed as this
   is now totally handled by pxa2xx_mfp_config():

-       PWER  = 0xC0000002;
-       PRER  = 0x00000002;
-       PFER  = 0x00000002;

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: move ARRAY_AND_SIZE definition to generic.h
eric miao [Sun, 3 Feb 2008 07:49:09 +0000 (15:49 +0800)]
[ARM] pxa: move ARRAY_AND_SIZE definition to generic.h

for use by other platforms

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: add MFP-alike pin configuration support for pxa{25x, 27x}
eric miao [Wed, 5 Mar 2008 09:16:29 +0000 (17:16 +0800)]
[ARM] pxa: add MFP-alike pin configuration support for pxa{25x, 27x}

Pin configuration on pxa{25x,27x} has now separated from generic GPIO
into dedicated mfp-pxa2xx.c by this patch. The name "mfp" is borrowed
from pxa3xx and is used here to alert the difference between the two
concepts: pin configuration and generic GPIOs.  A GPIO can be called
a "GPIO" _only_ when the corresponding pin is configured so.

A pin configuration on pxa{25x,27x} is composed of:

    - alternate function selection (or pin mux as commonly called)
    - low power state or sleep state
    - wakeup enabling from low power mode

The following MFP_xxx bit definitions in mfp.h are re-used:

    - MFP_PIN(x)
    - MFP_AFx
    - MFP_LPM_DRIVE_{LOW, HIGH}
    - MFP_LPM_EDGE_*

Selecting alternate function on pxa{25x, 27x} involves configuration
of GPIO direction register GPDRx, so a new bit and MFP_DIR_{IN, OUT}
are introduced. And pin configurations are defined by the following
two macros:

    - MFP_CFG_IN  : for input alternate functions
    - MFP_CFG_OUT : for output alternate functions

Every configuration should provide a low power state if it configured
as output using MFP_CFG_OUT().  As a general guideline, the low power
state should be decided to minimize the overall power dissipation. As
an example, it is better to drive the pin as high level in low power
mode if the GPIO is configured as an active low chip select.

Pins configured as GPIO are defined by MFP_CFG_IN(). This is to avoid
side effects when it is firstly configured as output.  The actual
direction of the GPIO is configured by gpio_direction_{input, output}

Wakeup enabling on pxa{25x, 27x} is actually GPIO based wakeup, thus
the device based enable_irq_wake() mechanism is not applicable here.

E.g.  invoking enable_irq_wake() with a GPIO IRQ as in the following
code to enable OTG wakeup is by no means portable and intuitive, and
it is valid _only_ when GPIO35 is configured as USB_P2_1:

    enable_irq_wake( gpio_to_irq(35) );

To make things worse, not every GPIO is able to wakeup the system.
Only a small number of them can, on either rising or falling edge,
or when level is high (for keypad GPIOs).

Thus, another new bit is introduced to indicate that the GPIO will
wakeup the system:

    - MFP_LPM_WAKEUP_ENABLE

The following macros can be used in platform code, and be OR'ed to
the GPIO configuration to enable its wakeup:

    - WAKEUP_ON_EDGE_{RISE, FALL, BOTH}
    - WAKEUP_ON_LEVEL_HIGH

The WAKEUP_ON_LEVEL_HIGH is used for keypad GPIOs _only_, there is
no edge settings for those GPIOs.

These WAKEUP_ON_* flags OR'ed on wrong GPIOs will be ignored in case
that platform code author is careless enough.

The tradeoff here is that the wakeup source is fully determined by
the platform configuration, instead of enable_irq_wake().

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: separate GPIOs and their mode definitions to pxa2xx-gpio.h
eric miao [Mon, 3 Mar 2008 01:44:25 +0000 (09:44 +0800)]
[ARM] pxa: separate GPIOs and their mode definitions to pxa2xx-gpio.h

two reasons:
1. GPIO namings and their mode definitions are conceptually not part
   of the PXA register definitions

2. this is actually a temporary move in the transition of PXA2xx to
   use MFP-alike APIs (as what PXA3xx is now doing), so that legacy
   code will still work and new code can be added in step by step

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: move mfp sysdev registeration out for suspend/resume order
eric miao [Mon, 4 Feb 2008 02:07:09 +0000 (10:07 +0800)]
[ARM] pxa: move mfp sysdev registeration out for suspend/resume order

MFP configurations after resume should be done before the GPIO registers
are restored.  Move the mfp sysdev registeration to the same place where
GPIO and IRQ sysdev(s) are registered to better control the order.

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: rename mfp.c to mfp-pxa3xx.c to indicate it's pxa3xx specific
eric miao [Mon, 3 Mar 2008 00:59:13 +0000 (08:59 +0800)]
[ARM] pxa: rename mfp.c to mfp-pxa3xx.c to indicate it's pxa3xx specific

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: make pxa_gpio_irq_type() processor generic
eric miao [Tue, 4 Mar 2008 09:18:38 +0000 (17:18 +0800)]
[ARM] pxa: make pxa_gpio_irq_type() processor generic

The main issue here is that pxa3xx does not have GAFRx registers,
access directly to these registers should be avoided for pxa3xx:

1. introduce __gpio_is_occupied() to indicate the GAFRx and GPDRx
   registers are already configured on pxa{25x,27x} while returns
   0 always on pxa3xx

2. pxa_gpio_mode(gpio | GPIO_IN) is replaced directly with assign-
   ment of GPDRx, the side effect of this change is that the pin
   _must_ be configured before use, pxa_gpio_irq_type() will not
   change the pin to GPIO, as this restriction is sane, esp. with
   the new MFP framework

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: move GPIO sysdev outside of generic.c into gpio.c
eric miao [Tue, 4 Mar 2008 08:13:58 +0000 (16:13 +0800)]
[ARM] pxa: move GPIO sysdev outside of generic.c into gpio.c

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: merge assignment of set_wake into pxa_init_{irq,gpio}()
eric miao [Tue, 4 Mar 2008 06:19:58 +0000 (14:19 +0800)]
[ARM] pxa: merge assignment of set_wake into pxa_init_{irq,gpio}()

To further clean up the GPIO and IRQ structure:

1. pxa_init_irq_gpio() and pxa_init_gpio() combines into a single
   function pxa_init_gpio()

2. assignment of set_wake merged into pxa_init_{irq,gpio}() as
   an argument

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: integrate low IRQ chip (ICIP) and high IRQ chip (ICIP2) into one
eric miao [Tue, 4 Mar 2008 05:53:05 +0000 (13:53 +0800)]
[ARM] pxa: integrate low IRQ chip (ICIP) and high IRQ chip (ICIP2) into one

This makes the code better organized and simplified a bit.  The change
will lose a bit of performance when performing IRQ ack/mask/unmask,but
that's not too much after checking the result binary.

This patch also removes the ugly #ifdef CONFIG_PXA27x .. #endif by
carefully not to access those pxa{27x,3xx} specific registers, this
is done by keeping an internal IRQ number variable.  The pxa-regs.h
is also modified so registers for IRQ > PXA_IRQ(31) are made public
even if CONFIG_PXA{27x,3xx} isn't defined (for pxa25x's sake)

The incorrect assumption in the original code that internal irq starts
from 0 is also corrected by comparing with PXA_IRQ(0).

"struct sys_device" for the IRQ are reduced into one single device on
pxa{27x,3xx}.

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: move GPIO IRQ specific code out of irq.c into gpio.c
eric miao [Tue, 4 Mar 2008 03:42:26 +0000 (11:42 +0800)]
[ARM] pxa: move GPIO IRQ specific code out of irq.c into gpio.c

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: introduce GPIO_CHIP() macro to clean up the definitions
eric miao [Mon, 3 Mar 2008 05:20:20 +0000 (13:20 +0800)]
[ARM] pxa: introduce GPIO_CHIP() macro to clean up the definitions

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: cleanup the coding style of pxa_gpio_set_type()
eric miao [Tue, 4 Mar 2008 03:18:48 +0000 (11:18 +0800)]
[ARM] pxa: cleanup the coding style of pxa_gpio_set_type()

by

1. wrapping long lines and making comments tidy

2. using IRQ_TYPE_* instead of migration macros __IRQT_*

3. introduce a pr_debug() for the commented printk(KERN_DEBUG ...)
   stuff

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: make GPIO IRQ code less dependent on the internal IRQs
eric miao [Tue, 4 Mar 2008 03:12:14 +0000 (11:12 +0800)]
[ARM] pxa: make GPIO IRQ code less dependent on the internal IRQs

by:

1. introduce dedicated pxa_{mask,unmask}_low_gpio()

2. remove set_irq_chip(IRQ_GPIO_2_x, ...) which has already been
   initialized in pxa_init_irq()

3. introduce dedicated pxa_init_gpio_set_wake()

Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] pxa: generalize the muxed gpio IRQ handling code with loop and ffs()
eric miao [Tue, 4 Mar 2008 02:57:18 +0000 (10:57 +0800)]
[ARM] pxa: generalize the muxed gpio IRQ handling code with loop and ffs()

1. As David Brownell suggests, using ffs() is going to make the loop
   a bit faster (by avoiding unnecessary shift and iteration)

2. Russell suggested find_{first,next}_bit() being used with the
   gedr[] array

Signed-off-by: eric miao <eric.miao@marvell.com>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4868/1: Enhance pxa270 GPIO definitions
Robert Jarzmik [Sun, 16 Mar 2008 10:55:32 +0000 (11:55 +0100)]
[ARM] 4868/1: Enhance pxa270 GPIO definitions

Enhanced GPIO alternate functions descriptions,
taken from Intel PXA270 Developers Manual.

Signed-off-by: Robert Jarzmik <rjarzmik@free.fr>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4834/3: Convert ASoC pxa2xx-ac97 driver to use the clock API
Mark Brown [Tue, 4 Mar 2008 10:14:24 +0000 (11:14 +0100)]
[ARM] 4834/3: Convert ASoC pxa2xx-ac97 driver to use the clock API

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4833/3: Convert non-SoC PXA2xx AC97 driver to clock API
Mark Brown [Tue, 4 Mar 2008 10:14:25 +0000 (11:14 +0100)]
[ARM] 4833/3: Convert non-SoC PXA2xx AC97 driver to clock API

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4832/2: Support AC97CLK on PXA3xx via the clock API
Mark Brown [Tue, 4 Mar 2008 10:14:23 +0000 (11:14 +0100)]
[ARM] 4832/2: Support AC97CLK on PXA3xx via the clock API

The AC97 clock rate on PXA3xx is generated with a configurable divider
from sys_pll.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4831/2: Add PXA2xx AC97 clocks to clock API
Mark Brown [Tue, 4 Mar 2008 10:14:22 +0000 (11:14 +0100)]
[ARM] 4831/2: Add PXA2xx AC97 clocks to clock API

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
17 years ago[ARM] 4830/1: Add support for the CLK_POUT pin on PXA3xx CPUs
Mark Brown [Wed, 13 Feb 2008 15:39:21 +0000 (16:39 +0100)]
[ARM] 4830/1: Add support for the CLK_POUT pin on PXA3xx CPUs

Expose control of the PXA3xx 13MHz CLK_POUT pin via the clock API

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>