Commit graph

1827 commits

Author SHA1 Message Date
Scott Jiang
2b6678c552 Blackfin: boards: fix pcm device name
The pcm driver name has been changed, but the device name has not.

Signed-off-by: Scott Jiang <scott.jiang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:34 -04:00
Mike Frysinger
6ebc2bb92a Blackfin: SMP: punt unused atomic_test_mask helper
No one uses this func, so just punt it.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:34 -04:00
Steven Rostedt
a2de3f79b1 Blackfin: irqs: do not trace arch_local_{*,irq_*} functions
Do not trace arch_local_save_flags(), arch_local_irq_*() and friends.
Although they are marked inline, gcc may still make a function out of
them and add it to the pool of functions that are traced by the function
tracer. This can cause undesirable results (kernel panic, triple faults,
etc).

Add the notrace notation to prevent them from ever being traced.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:33 -04:00
Mike Frysinger
b0d3dc1291 Blackfin: bf526: restrict reboot workaround to 0.0 silicon
The bug in the BF526 rom when doing a software reset exists only in older
silicon versions, so don't clear SWRST on newer parts.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:33 -04:00
Mike Frysinger
65cd3b5362 Blackfin: bf51x: fix alternative portmux options
The BF51x's alternative portmux Kconfig options were copy & pasted from
the BF52x, but never tweaked to reflect it.  So drop the old options as
they were never used (and were simply wrong), and add the BF51x specific
pieces to the Kconfig and header.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:32 -04:00
Mike Frysinger
fdfb0becea Blackfin: bf54x: fix GPIO resume code
Back in commit c03c2a8734, we fixed logic in the non-bf54x
GPIO resume code to set the data levels properly before the direction
to avoid spurious line glitches.  But we missed the bf54x code paths.
So add the same fix there.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:32 -04:00
Mike Frysinger
9e770f7780 Blackfin: dpmc: optimize SDRAM programming slightly
No need to reload these registers constantly since they're always
available (we're not making any function calls in between).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:31 -04:00
Mike Frysinger
da31d6fb46 Blackfin: dpmc: don't save/restore scratch registers
The Blackfin C ABI says we do not need to save/restore R0-R3 and P0-P2
as they are available as scratch registers.  So don't bother.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:31 -04:00
Mike Frysinger
9466a0510a Blackfin: bf538: pull gpio/port logic out of core hibernate paths
Re-architect how we save/restore the gpio/port logic that only pertains
to bf538/bf539 parts by pulling it out of the core code paths and pushing
it out to bf538-specific locations.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:30 -04:00
Mike Frysinger
eed7b83658 Blackfin: dpmc: optimize hibernate/resume path
The current save logic used in hibernation is to do a MMR load (base +
offset) into a register, and then push that onto the stack.  Then when
restoring, pop off the stack into a register followed by a MMR store
(base + offset).  These use plenty of 32bit insns rather than 16bit,
are pretty long winded, and full of pipeline bubbles.

So, by taking advantage of MMRs that are contiguous, the multi-register
push/pop insn, and register abuse, we can shrink this code considerably.

When saving, the new logic does a lot of loads into the data and pointer
registers before executing a single multi-register push insn.  Then when
restoring, we do a single multi-register pop insn followed by a lot of
stores.  Overall, this allows us to cut the insn count by ~30%, the code
size by ~45%, and drastically reduce the register hazards that trigger
bubbles in the pipeline.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:29 -04:00
Mike Frysinger
d7228e7eb9 Blackfin: dpmc: do not save/restore EVT0/EVT1/EVT4 when hibernating
EVT0 is for emulation, EVT1 is for reset, and EVT4 is the "global int
disable" region.  None of these are used by software (or even hardware),
so don't bother saving/restoring them when we hibernate since nothing
ever uses these in Linux (the only thing they would be useful for is
core-memory scratch, but that's just crazy talk).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:29 -04:00
Mike Frysinger
584ecbaa25 Blackfin: dpmc: relocate hibernate helper macros
This defines only get used in the hibernate code, so remove them from the
global dpmc header as no one else cares.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:28 -04:00
Mike Frysinger
429e257ea3 Blackfin: dpmc: omit RETE/RETN when hibernating
The RETE/RETN registers are only used in emulation(JTAG) and NMI nodes,
or as scratch registers, neither of which need to be saved/restored as
this code doesn't execute at those core event levels.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:28 -04:00
Mike Frysinger
4705a25c06 Blackfin: dpmc: optimize SIC_IWR programming a little
For parts with more than one SIC_IWR, we can optimize the writing
a little bit using better Blackfin insns.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:27 -04:00
Mike Frysinger
01f8e34c98 Blackfin: gpio/ints: generalize pint logic
Have the logic that uses peripheral interrupt blocks key off of pint
defines rather than CPU names so that things are generalized across
families.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:27 -04:00
Mike Frysinger
85c2737ae7 Blackfin: dpmc: bind to MMR names and not CPUs
Have the code work off of MMR names rather than CPU defines so there is
less code to tweak in the future with new parts.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:26 -04:00
Mike Frysinger
0a7e5413ca Blackfin: debug-mmrs: generalize pint logic
Don't bind the code to specific CPU defines.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:26 -04:00
Mike Frysinger
82ed5f73ed Blackfin: bf54x: switch to common pint MMR struct
We have a struct in the headers describing the register layout, so
drop the local duplicate one.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:25 -04:00
Mike Frysinger
b69c920cb1 Blackfin: bf54x: tweak MMR pint names
The hardware block uses the name "request" rather than "irq", so update
the struct accordingly.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:25 -04:00
Mike Frysinger
b0759a4d23 Blackfin: bf54x: constify pint register array
The array of pointers to register blocks never changes, so constify it.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:24 -04:00
Mike Frysinger
1a9e5bfbd4 Blackfin: gpio: punt unused GPIO_# defines
These defines don't accomplish much as GPIO_# is the same thing as #.
Each CPU already provides helpful symbolic defines like GPIO_<PIN>
which everyone uses, so just punt these # ones.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:24 -04:00
Mike Frysinger
969564508d Blackfin: convert unicode space gremlins
Not sure how these guys slipped in, but they're annoying me.
So bring these unicode space gremlins down to earth to normal
ascii spaces.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:23 -04:00
Mike Frysinger
006669ec21 Blackfin: pwm: implement linux/pwm.h API
For now, this only supports gptimers.  Support for dedicated PWM devices
as found on newer parts to come.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:23 -04:00
Mike Frysinger
e1b5596533 Blackfin: gptimers: add enable/disable by timer id
The API is geared around timer ids, except for the act of enabling
and disabling timers.  So add a small helper to fill out the gap.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:22 -04:00
Steven Miao
353470cc50 Blackfin: make sure percpu section is aligned in XIP builds
The alignment is normally handled by PERCPU(), but we need to do it
ourselves in the XIP build due to the custom layout.

Signed-off-by: Steven Miao <realmz6@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:22 -04:00
Mike Frysinger
997f95e190 Blackfin: gptimers: use bfin read/write helpers
Use proper helper macros for reading/writing the MMRs rather than
volatile markings on the struct.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:21 -04:00
Mike Frysinger
24a6b91f69 Blackfin: gptimers: use register structs from common header
Now that asm/gptimers.h has the hardware register struct layout, there's
no need to duplicate things locally.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:21 -04:00
Mike Frysinger
af459864b3 Blackfin: debug-mmrs: use new gptimer_group layout to simplify code
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:20 -04:00
Mike Frysinger
94674b15df Blackfin: debug-mmrs: prevent macro arg from expanding
Passing a non-simple expression in as the addr arg could incorrectly
apply the pointer cast resulting in misbehavior.  Add proper paren.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:20 -04:00
Mike Frysinger
7595ac0711 Blackfin: gptimers: add group structure for hardware register layout
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:19 -04:00
Mathias Krause
a64b384818 Blackfin: exec: remove redundant set_fs(USER_DS)
The address limit is already set in flush_old_exec() so this
set_fs(USER_DS) is redundant.

Signed-off-by: Mathias Krause <minipli@googlemail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:18 -04:00
Mike Frysinger
979365ba4e Blackfin: update anomaly lists to latest public info
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:18 -04:00
Mike Frysinger
4e12b08b72 Blackfin: bf561-ezkit: change parallel flash from M to Y in defconfig
These flashes are always on the board, so might as well enable them by
default rather than a module.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:17 -04:00
Mike Frysinger
e14062563c Blackfin: debug-mmrs: disable PERIPHERAL_MAP for IMDMA channels
The documentation for the IMDMA channels appears to be incorrect.
These DMA blocks don't actually have PERIPHERAL_MAP MMRs for us
to access.  Attempts to do so lead to system mmr hardware errors.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:18:17 -04:00
Mike Frysinger
ef0531b2e4 Blackfin: debug-mmrs: fix typo in single dmac setup
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:44 -04:00
Mike Frysinger
50f92aa334 Blackfin: convert to asm-generic/mutex-dec.h for all systems
The Blackfin mutex.h is merely a copy of an older asm-generic/mutex-dec.h,
so punt it and just use the common one directly.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:43 -04:00
Mike Frysinger
fb1d9be596 Blackfin: optimize double fault boot checking
This moves the double fault data used at boot time into a single struct
which can then easily be addressed with indexed loads rather than having
to explicitly load multiple addresses.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:43 -04:00
Mike Frysinger
072a5cff2f Blackfin: time: replace magic numbers with defines
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:42 -04:00
Mike Frysinger
b648072d3e Blackfin: SMP: optimize start up code a bit
This just imports all of the optimization work done in the
common startup code.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:42 -04:00
Mike Frysinger
2f7d63f909 Blackfin: boards: clean up redundant/dead spi resources
The default for the Blackfin SPI driver is 8 bits and dma disabled,
so many of the bfin5xx_spi_chip resources are redundant.  So punt
those parts.

Further, drivers should themselves be declaring 16 bit transfers,
so for those that do, and for the ones which no longer do 16 bit
transfers, drop the bfin5xx_spi_chip resources.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:41 -04:00
Mike Frysinger
9be8631b8a Blackfin: net2272: move pin setup to boards files
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 01:10:41 -04:00
Mike Frysinger
c6cb13f9fe Blackfin: convert to kbuild asm-generic support
No need for one line header stubs.  Just declare it in Kbuild.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-07-23 00:41:23 -04:00
Wanlong Gao
c7cbb02222 rtc: fix build warnings in defconfigs
RTC_CLASS is changed to bool, so 'm' is invalid.

Signed-off-by: Wanlong Gao <wanlong.gao@gmail.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-06-15 20:04:02 -07:00
Steven Miao
5ff6197f82 Blackfin: strncpy: fix handling of zero lengths
The jump to 4f will cause the NUL padding loop to run at least one time,
so if string length is zero just jump to the end.  Otherwise we wrongly
write one NUL byte when size==0.

Signed-off-by: Steven Miao <realmz6@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-06-03 11:05:36 -04:00
Mike Frysinger
c320afe965 Blackfin: debug-mmrs: include RSI_PID[4567] MMRs
The documentation is a little iffy as to whether these are actual MMRs,
but reading them on the hardware works, and the previous version of this
logic (the SDH) had PID[4567].  So add it for RSI too.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:56 -04:00
Mike Frysinger
fcb243918f Blackfin: bf51x: fix up RSI_PID# MMR defines
Looks like the copying of MMR defines from the SDH block missed updating
the addresses of the RSI_PID# registers.  So tweak them to reflect the
actual hardware.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:56 -04:00
Mike Frysinger
61aa818f7b Blackfin: bf52x/bf54x: fix up usb MMR defines
The bf52x/bf54x have the incorrect addresses for USB_EP_NI7_RXINTERVAL
and USB_EP_NI7_TXCOUNT, so adjust those.

Further, the bf54x header puts the USB defines in the wrong place, so
shuffle them back to the right grouping.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:56 -04:00
Mike Frysinger
d09fb60203 Blackfin: debug-mmrs: fix typos with gptimers/mdma/ppi
This code was mostly developed against a BF54x, so some BF537-specific
issues were missed.

The PPI block starts at PPI_CONTROL, not PPI_STATUS (which is the reverse
of the EPPI block).

The MDMA block starts at MDMA_NEXT_DESC_PTR, not MDMA_CONFIG.  Seems the
sim does not catch misreads here so that'll need to get fixed.

The gptimer block is mostly 32bit regs, not 16bit.  Use the gptimer struct
to figure that out rather than hardcoding it locally.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:56 -04:00
Mike Frysinger
a4ffd95692 Blackfin: gptimers: add structure for hardware register layout
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:55 -04:00
Mike Frysinger
427472c967 Blackfin: wire up new sendmmsg syscall
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-28 17:02:55 -04:00