Magnus Damm [Fri, 19 Dec 2008 06:34:41 +0000 (15:34 +0900)]
video: sh_mobile_lcdcfb deferred io support
This patch adds sh_mobile_lcdcfb deferred io support for SYS panels.
The LCDC hardware block managed by the sh_mobile_lcdcfb driver supports
RGB or SYS panel configurations. SYS panels come with an external display
controller that is resposible for refreshing the actual LCD panel. RGB
panels are controlled directly by the LCDC and they need to be refreshed
by the LCDC hardware.
In the case of SYS panels we can save some power by configuring the LCDC
hardware block in one-shot mode. In this one-shot mode panel refresh is
managed by software. This works well together with deferred io since it
allows us to stop clocks for most of the time and only enable clocks when
we actually want to trigger an update. When there is no fbdev activity
the clocks are kept stopped which allows us to deep sleep.
The refresh rate in deferred io mode is set using platform data. The same
platform data can also be used to disable deferred io mode.
As with other deferred io frame buffers user space code should use fsync()
on the frame buffer device to trigger an update.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Magnus Damm [Fri, 19 Dec 2008 06:34:32 +0000 (15:34 +0900)]
video: deferred io with physically contiguous memory
Extend the deferred io code from only supporting vmalloc()ed frame
buffer memory to support both vmalloc()ed and physically contiguous
frame buffer memory.
The sh_mobile_lcdcfb hardware does not support scatter gather so
we need physically contiguous memory to back our frame buffer.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Magnus Damm [Fri, 19 Dec 2008 06:34:09 +0000 (15:34 +0900)]
video: fix deferred io fsync()
If CONFIG_FB_DEFERRED_IO is set, but there are framebuffers
registered that does not make use of deferred io, then fsync()
on those framebuffers will result in a crash. Fix that.
This is needed for sh_mobile_lcdcfb since we always enable
deferred io at compile time but we may disable deferred io
for some types of hardware configurations.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Magnus Damm [Fri, 19 Dec 2008 03:02:16 +0000 (12:02 +0900)]
sh: add LCDC interrupt configuration to AP325 and Migo-R
Add LCDC interrupt resources for AP325 and Migo-R. The LCDC driver does
not require interrupts at this point, but changes such as one-shot SYS
mode using deferred io, and wait-for-vblank will both need this.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Wed, 17 Dec 2008 06:33:43 +0000 (15:33 +0900)]
sh: Enable skipping of bss on debug platforms for sh32 also.
This enables the same functionality that sh64 has for sh32. When running
on simulated hardware or via remote memory via the debug interface,
memory is gauranteed to be zero on boot already, and skipping the zeroing
of BSS has measurable boot time benefits.
Paul Mundt [Wed, 17 Dec 2008 05:53:24 +0000 (14:53 +0900)]
serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL.
sci_poll_put_char() happens to also be used by the serial console,
while sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. Add
another gnarly ifdef to shut up the compiler.
Paul Mundt [Wed, 17 Dec 2008 05:41:54 +0000 (14:41 +0900)]
sh: Kill off cf-enabler with extreme prejudice.
Now that the rest of the boards that were using cf-enabler "generically"
have switched to setting up their mappings on their own, only the mach-se
boards were left using it. All of the cf-enabler using mach-se boards
use a special initialization of the MRSHPC windows rather than going
through the special PTE as other SH-4 platforms do. This consolidates
the MRSHPC setup logic, hooks it up on the boards that care, and gets rid
of any and all remaining references to cf-enabler.
This has been long overdue, as cf-enabler has been the bane of
arch/sh/kernel for the last 7 years. Good riddance.
Paul Mundt [Wed, 17 Dec 2008 03:48:41 +0000 (12:48 +0900)]
sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk.
This gets rid of the cf enabler use on mach-sh03 and switches to use
pata_platform with the proper address directly. cf_enabler is
subsequently disabled for mach-sh03.
Paul Mundt [Wed, 17 Dec 2008 03:20:15 +0000 (12:20 +0900)]
sh: Simplify kernel_thread_helper() for sh32.
This can use the same implementation as sh64, the generated assembly is
the same between the new and old version, so there is not much point in
leaving it open coded in inline assembly.
This is preparatory work for future consolidation of the _32/_64
variants.
Paul Mundt [Wed, 17 Dec 2008 02:47:59 +0000 (11:47 +0900)]
sh: Kill off sh_bios_in_gdb_mode().
With the reworked kgdb support, we always detach and reinitialize the
stub. This was mostly a feature for handoffs between sh-ipl+g and the
kgdb stub, but virtually no sh-ipl+g versions ever had this working
right in the first place.
Given that the sh-ipl+g stubs in general use today don't even support
the GDB stub, and we have already killed off the special casing in the
sh-sci serial driver, kill off this now unused symbol too.
Dave Peverley [Tue, 16 Dec 2008 00:35:40 +0000 (09:35 +0900)]
sh: oprofile: Backtrace support.
This patch improves the oprofile support on sh and adds backtrace
support.
Signed-off-by: Dave Peverley <dpeverley@mpc-data.co.uk> Signed-off-by: Chris Smith <chris.smith@st.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Tue, 16 Dec 2008 00:33:53 +0000 (09:33 +0900)]
sh: oprofile: Refactor common setup code for multiple driver support.
This re-implements the old op_model_null code in to something more
generic, where multiple drivers, backtrace, etc. can all be interfaced.
Based largely on arch/mips/oprofile/common.c.
Matt Fleming [Sun, 14 Dec 2008 12:02:27 +0000 (12:02 +0000)]
sh: Convert Cayman boards from hw_interrupt_type to irq_chip
I've been unable to even compile-test this change because I don't have
an sh5 toolchain. All uses of hw_interrupt_type for SuperH boards have
now been converted to use irq_chip.
Signed-off-by: Matt Fleming <mjf@gentoo.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Matt Fleming [Sun, 14 Dec 2008 12:02:26 +0000 (12:02 +0000)]
sh: Convert Dreamcast support from hw_interrupt_type to irq_chip
Switch the dreamcast IRQ code over to the irq_chip way of doing things,
so that we can set GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH boards.
Also, whilst I'm here change some things to make checkpatch.pl happy:
- Indent with tabs, not with spaces
- Include <linux/io.h>, not <asm/io.h>
- Fix the multi-line comment style
- Fix some typos in the comments
Tested-by: Adrian McMenamin <adrian@newgolddream.dyndns.info> Signed-off-by: Matt Fleming <mjf@gentoo.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Thu, 11 Dec 2008 09:46:46 +0000 (18:46 +0900)]
sh: Generic kgdb stub support.
This migrates from the old bitrotted kgdb stub implementation and moves
to the generic stub. In the process support for SH-2/SH-2A is also added,
which the old stub never provided.
Paul Mundt [Wed, 10 Dec 2008 10:26:44 +0000 (19:26 +0900)]
sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery.
Presently these cases are not handled properly due to the return value
not being passed back. This needs to be correct to get proper behaviour
out of things like the tracehook signal notifier, amongst others.
Paul Mundt [Wed, 10 Dec 2008 08:16:09 +0000 (17:16 +0900)]
sh: Kill off sh64's unused alloc/free_task_struct() definitions.
These were left over from some time ago, sh64 never got around to
defining __HAVE_ARCH_TASK_STRUCT_ALLOCATOR during the conversion, and it
has no need to. Kill these off and use the generic versions instead.
Paul Mundt [Wed, 10 Dec 2008 08:09:36 +0000 (17:09 +0900)]
sh: mach-migor: Kill off unused Migo-R machvec.
This kills off the special Migo-R machvec, as nothing is using it. By
default this will switch to using the generic machvec, which provides the
same functionality. This saves us a bit of space in the machvec section.
Aoi Shinkai [Wed, 10 Dec 2008 04:30:28 +0000 (13:30 +0900)]
sh: Delete unnecessary mov in the interrupt exception entry point.
The INTEVT read at interrupt exception entry is uneccessary, as the read
is deferred until we are ready to enter do_IRQ(). The kgdb nmi path still
requires it, so move it there.
Signed-off-by: Aoi Shinkai <shinkoi2005@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Mon, 8 Dec 2008 02:25:50 +0000 (11:25 +0900)]
sh: Fix up the SH-4A mutex fastpath semantics.
This fixes up the __mutex_fastpath_xxx() routines to match the semantics
noted in the comment. Previously these were looping rather than doing a
single-pass, which is counter-intuitive, as the slow path takes care of
the looping for us in the event of contention.
Magnus Damm [Thu, 4 Dec 2008 09:00:39 +0000 (18:00 +0900)]
sh: update se7343 defconfig
Update the se7343 defconfig with:
- use 33MHz PCLK
- increase max number of SCIFs
- add serial console configuration to compiled-in kernel command line
- add 8250 serial port support
- add sh-mobile-i2c driver
- add uio driver to export VEU and VPU
- add usb support and isp1161 host controller
- add dm9601 ethernet-over-usb support
- remove smc91x support
Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Magnus Damm [Thu, 4 Dec 2008 09:00:30 +0000 (18:00 +0900)]
sh: remove ioport cruft and smc91x from se7343
Remove out-of-date se7343 ioport code including some old support
for unknown-ne2000-pcmcia-card, cf-over-pcmcia and a mysterical
smc91x that once must have been on a special daughterboard.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Matt Fleming [Fri, 28 Nov 2008 08:58:30 +0000 (08:58 +0000)]
sh: Switch HD64461 from hw_interrupt_type to irq_chip
Use struct irq_chip for the interrupt handler for the HD64461. Also
convert some in{b,w} and out{b,w} calls to the equivalent __raw_* calls.
Include <linux/io.h> and not <asm/io.h> to stop checkpatch.pl
complaining.
This change should now allow machines with HD64461 to define
GENERIC_HARDIRQS_NO__DO_IRQ.
Acked-by: Kristoffer Ericson <Kristoffer.Ericson@gmail.com> Signed-off-by: Matt Fleming <mjf@gentoo.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Wed, 26 Nov 2008 06:22:50 +0000 (15:22 +0900)]
sh: do not latency trace idle.
Description snipped from Steven Rostedt's PPC patch:
When idle is called, interrupts are blocked, but the idle
function will still wake up on an interrupt. The problem is
that the interrupt disabled latency tracer will take this call
to idle as a latency.
This patch disables the latency tracing when going into idle.
Paul Mundt [Tue, 25 Nov 2008 19:21:36 +0000 (04:21 +0900)]
sh: Re-add support for best fit ISA tuning if none is available.
This was removed in the libgcc integration, but there are still some
compilers that need this. We also relax the rules on the ISA tuning in
the cases where there are no matches for the CPU tuning and adopt the
-any default, which matches the intent of the isa-y target list. This
compensates for mismatches where binutils supports a wide array of
targets whilst the compiler is much more restricted.
Paul Mundt [Tue, 25 Nov 2008 15:29:58 +0000 (00:29 +0900)]
sh: Provide optimized unaligned loads on SH-4A.
This adds support for unaligned loads on SH-4A, using the SH-4A's
neutered movua.l instruction. As movua.l is r0-inspired, stores are
still handled through the packed struct.
Based on asm-generic/unaligned.h by Harvey Harrison.
Magnus Damm [Tue, 25 Nov 2008 12:57:29 +0000 (21:57 +0900)]
sh: P4 ioremap pass-through
This patch adds a pass-through case when ioremapping P4 addresses.
Addresses passed to ioremap() should be physical addresses, so the
best option is usually to convert the virtual address to a physical
address before calling ioremap. This will give you a virtual address
in P2 which matches the physical address and this works well for
most internal hardware blocks on the SuperH architecture.
However, some hardware blocks must be accessed through P4. Converting
the P4 address to a physical and then back to a P2 does not work. One
example of this is the sh7722 TMU block, it must be accessed through P4.
Without this patch P4 addresses will be mapped using PTEs which
requires the page allocator to be up and running.
Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>