The earlyprintk path needs to establish the membase cookie, but is too
early for general resource management. Split out the remap logic
accordingly.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently the early console setup will be invoked for every device handed
off to he earlyprintk command line argument. In practice we can only
handle one, so this adds a sanity check to prevent clobbering the
existing active console.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
The break flag timer is presently added through add_timer() via the
interrupt and error paths, where it is possible to send multiple breaks
in rapid succession and trigger the timer pending BUG_ON(). This moves
over to a mod_timer() instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently much of the error handling paths are inlined, stemming from a
time when they were much smaller. This simply brings them out of line and
leaves it up to the compiler. Given that some of these now contain nested
loops, it's pretty hard to justify the inlining regardless of the
footprint.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
At the moment the request/release_port ops are no-ops with the port
remapping case tied in to the config_port op. This moves the remap logic
in to the request_port, balances it with unmapping in the port release,
and finally takes care of the mem region reservations.
All existing users are of the port autoconf variety, so we follow the
example of other drivers that wrap in to the port request by way of the
config op in the UART_CONFIG_TYPE case.
This is the first step towards fixing up conflicts with multiple users
of the same ports, as currently happens between sh-sci and spi_sh_sci.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
We were using an IS_ERR() check for the ioremap case, presumably because
this matched the old custom ioremap call that sh64 was providing. Now
that all ioremap() implementations trap the IS_ERR case and hand back a
NULL, check for that instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently there are only a few hardcoded cases using these definitions,
so kill off the unused ones completely. This will make it easier to
transition off of the remaining cases.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
In the olden days it was possible to register a map of ports per device,
but this has long since been abandoned due to the desire to match up with
clkdev and other functionality. As a result, all of the in-tree users
have for some time already been migrated off of such behaviour, while
we've left support code in place to deal with either case. Dropping the
code permits for quite a bit of simplification, so we do that now before
any users of the old interface are able to be added back in.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
There's nothing worth hiding under the ifdef in the platform DMA
definitions, and we certainly don't want board code adding this in to
their platform data definitions, so we always expose the slave rx/tx
and device pointer members instead.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Presently the port defs are lamely copied around between competing data
structures (one platform facing, the other driver internal). As we pretty
much require all of the data from the platform facing structure within
the driver too, simply nest the pointer directly and kill off the
duplication.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
All of the muxed IRQs presently populate the IRQ array verbosely, this
simply provides a trivial helper to do it for them.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
All users of the platform port data specify a mapbase where the driver
later derives the membase from. Now that UPF flags are taken in to
account for generic ioremapping we can kill off the port-specific membase
clobbering and simply use the generic paths.
This derives from a time when sh64 was not capable of using the generic
ioremap implementation and had employed early bolted DTLB mappings for
port access, which is no longer an issue.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf: Validate cpu early in perf_event_alloc()
perf: Find_get_context: fix the per-cpu-counter check
perf: Fix contexted inheritance
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: Clear irqstack thread_info
x86: Make relocatable kernel work with new binutils
* 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus: (26 commits)
MIPS: Malta: enable Cirrus FB console
MIPS: add CONFIG_VIRTUALIZATION for virtio support
MIPS: Implement __read_mostly
MIPS: ath79: add common WMAC device for AR913X based boards
MIPS: ath79: Add initial support for the Atheros AP81 reference board
MIPS: ath79: add common SPI controller device
SPI: Add SPI controller driver for the Atheros AR71XX/AR724X/AR913X SoCs
MIPS: ath79: add common GPIO buttons device
MIPS: ath79: add common watchdog device
MIPS: ath79: add common GPIO LEDs device
MIPS: ath79: add initial support for the Atheros PB44 reference board
MIPS: ath79: utilize the MIPS multi-machine support
MIPS: ath79: add GPIOLIB support
MIPS: Add initial support for the Atheros AR71XX/AR724X/AR931X SoCs
MIPS: jump label: Add MIPS support.
MIPS: Use WARN() in uasm for better diagnostics.
MIPS: Optimize TLB handlers for Octeon CPUs
MIPS: Add LDX and LWX instructions to uasm.
MIPS: Use BBIT instructions in TLB handlers
MIPS: Declare uasm bbit0 and bbit1 functions.
...
This patch adds basic support for LM94 to the LM93 driver. LM94 specific
sensors and features are not supported.
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
While most users of a physical Malta board are using the serial port
as the console, a lot of QEMU users would prefer to interact with a
graphical console. Enable the Cirrus FB support in the Malta default
configuration to make that possible. Note that the default console will
still be the serial port, users have to pass "console=tty0" to the
kernel to use the Cirrus FB.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2001/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Just do what everyone else is doing by placing __read_mostly things in
the .data.read_mostly section.
mips_io_port_base can not be read-only (const) and writable
(__read_mostly) at the same time. One of them has to go, so I chose
to eliminate the __read_mostly. It will still get stuck in a portion
of memory that is not adjacent to things that are written, and thus
not be on a dirty cache line, for whatever that is worth.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
To: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/1702/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This patch adds initial support for various Atheros SoCs based on the
MIPS 24Kc core. The following models are supported at the moment:
- AR7130
- AR7141
- AR7161
- AR9130
- AR9132
- AR7240
- AR7241
- AR7242
The current patch contains minimal support only, but the resulting
kernel can boot into user-space with using of an initramfs image on
various boards which are using these SoCs. Support for more built-in
devices and individual boards will be implemented in further patches.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
Cc: linux-mips@linux-mips.org
Cc: Luis R. Rodriguez <lrodriguez@atheros.com>
Cc: Cliff Holden <Cliff.Holden@Atheros.com>
Cc: Kathy Giori <Kathy.Giori@Atheros.com>
Patchwork: https://patchwork.linux-mips.org/patch/1947/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
On the off chance that uasm ever warns about overflow, there is no way
to know what the offending instruction is.
Change the printks to WARNs, so we can get a nice stack trace. It has
the added benefit of being much more noticeable than the short single
line warning message, so is less likely to be ignored.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/1905/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This patch adds a generic solution to support multiple machines based on
a given SoC within a single kernel image. It is implemented already for
several other architectures but MIPS has no generic support for that yet.
[Ralf: This competes with DT but DT is a much more complex solution and this
code has been used by OpenWRT for a long time so for now DT is a bad reason
to stop the merge but longer term this should be migrated to DT.]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Cc: linux-mips@linux-mips.org
Cc: kaloz@openwrt.org
Cc: Luis R. Rodriguez <lrodriguez@atheros.com>
Cc: Cliff Holden <Cliff.Holden@Atheros.com>
Patchwork: https://patchwork.linux-mips.org/patch/1814/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>