2967 Commits

Author SHA1 Message Date
zbb
952715891b Fix endianness on FDT read in ARM GIC
Submitted by:  Jakub Palider <jpa@semihalf.com>
Reviewed by:   ian, nwhitehorn
Obtained from: Semihalf
2015-02-24 12:31:08 +00:00
ian
d8abe6df98 There is no reason to do i+dcache writeback and invalidate when changing
the translation table (this may be left over from armv5 days).  It's
especially bad to do so using a cache operation that isn't coherent on
SMP systems.

Submitted by:	Michal Meloun
2015-02-23 20:09:05 +00:00
andrew
4928f50790 Add support to the bcm2835 mailbox driver to work before interrupts are
enabled. This will be needed to enable the power on devices early on in the
boot process.
2015-02-22 11:11:05 +00:00
ian
00f7051c20 Correct a comment which was exactly backwards from reality. 2015-02-21 22:19:59 +00:00
andrew
47da3760fc Allow the ARM unwinder to work through modules. This will be used to add
support for unwinding from dtrace.

Tested by:	gnn (with dtrace)
Sponsored by:	ABT Systems Ltd
2015-02-19 12:06:57 +00:00
loos
b42715ff59 Make use of the newly introduced macros.
Update the copyright.
2015-02-17 20:37:21 +00:00
andrew
5b8b9e9db4 Pull the ARM ddb unwind code out to a new file. This will allow it to be
used by other places that expect to unwind the stack, e.g. dtrace and
stack(9).

As I have written most of this code I'm changing the license to the
standard FreeBSD license. I have received approval from the other
developers who have changed any of the affected code.

Approved by:	ian, imp, rpaulo, eadler (all license change)
2015-02-17 13:09:20 +00:00
loos
84c7fb0dac Add a mask to match only the relative base address of BSC controllers.
This should fix the attach of BSC on RPI2 (based on andrew@ dmesg).
2015-02-16 19:06:31 +00:00
andrew
3735ecb94a Add the structures needed to get/set the power state. These can be used
when, for example, we boot without U-Boot and wish to enable USB, or to
suspend an unneeded device.

MFC after:	1 week
2015-02-15 11:23:27 +00:00
ian
4b0d911e54 Add logic for handling new-style ARM cpu ID info.
Submitted by:	Michal Meloun <meloun@miracle.cz>
2015-02-14 18:54:52 +00:00
andrew
022fa8073b Remove the non-EABI code from the DDB stack unwinder, we only support the
ARM EABI now.
2015-02-11 10:40:49 +00:00
andrew
cd71cd9034 The cpu_id macro was renamed in r278529, catch up with this new name. 2015-02-11 10:37:55 +00:00
gnn
b9be305241 Initial version of DTrace on ARM32.
Submitted by:	Howard Su based on work by Oleksandr Tymoshenko
Reviewed by:	ian, andrew, rpaulo, markj
2015-02-10 19:41:30 +00:00
zbb
d12ce3b931 Resolve cache line size from CP15
Switch the cache line size during invalidations/flushes
to be read from CP15 cache type register.

Submitted by:  Wojciech Macek <wma@semihalf.com>
Reviewed by:   ian, imp
Obtained from: Semihalf
2015-02-10 14:11:23 +00:00
gonzo
e165a43065 Add VideoCore audio driver for Rasperry Pi (BCM2835) 2015-02-08 01:12:40 +00:00
gonzo
2d2fbd053f Make VCHI driver optional and add "device vchiq" to default RPI-B config 2015-02-07 01:03:45 +00:00
imp
cc5ead19f5 Pull in the rpi.dts -> rpi.dtb module (dtb/rpi) and have it install
rpi.dtb in /boot/dtb by default.
2015-02-07 00:41:08 +00:00
gonzo
56215941dd Import VCHI driver for Broadcom's VideoCore IV GPU
Differential Revision:	D1753
2015-02-05 19:54:03 +00:00
loos
5e95f6f1c9 Fix a bug where an interrupt could be masked unintentionally when
bus_config_intr() is called with the same interrupt type and polarity that
is already set.

Pointy hat:	loos
2015-02-04 18:35:49 +00:00
loos
67e162c6ce Add GPIO interrupt support for BCM2835 (Raspberry pi).
With this commit any of the GPIO pins can now be programmed to act as an
interrupt source for GPIO devices (i.e. limited to devices directly
attached to gpiobus - at least for now).

Differential Revision:	https://reviews.freebsd.org/D1000
2015-02-04 18:15:28 +00:00
loos
c849e86766 Sort and remove unnecessary includes. 2015-02-04 17:23:02 +00:00
loos
2d4837b5a0 Remove stale comments about the issues with HS mode.
Remove a previous workaround to limit the minimum sdhci frequency that
isn't needed anymore.
2015-02-04 16:36:51 +00:00
loos
e47af519e4 Remove some duplicate calls to bus_release_resource() and destroy the mutex
on error cases.

While here remove unnecessary includes.
2015-02-04 16:21:45 +00:00
rpaulo
a2d0d4f6b1 am335x_clk_pruss_activate(): use the L3F clock.
The DISP DPLL clock is slower and was making the PRU programs slower
on FreeBSD than on Linux.

Submitted by:	Manuel Stuehn <freebsdnewbie at freenet.de>
MFC after:	1 week
2015-02-02 08:01:10 +00:00
ian
bea8bd4cce Remove a stale comment. The logic that deleted the map before other
resources was removed long ago, but the comment stuck somehow.
2015-02-01 17:19:57 +00:00
kib
3bbc91d138 Do not qualify the mcontext_t *mcp argument for set_mcontext(9) as
const.  On x86, even after the machine context is supposedly read into
the struct ucontext, lazy FPU state save code might only mark the FPU
data as hardware-owned.  Later, set_fpcontext() needs to fetch the
state from hardware, modifying the *mcp.

The set_mcontext(9) is called from sigreturn(2) and setcontext(2)
implementations and old create_thread(2) interface, which throw the
*mcp out after the set_mcontext() call.

Reported by:	dim
Discussed with:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2015-01-31 21:43:46 +00:00
andrew
086d1fe33f Stop using load-multiple with lr and pc. This has been deprecated in ARMv7
and clang 3.6 warns about it. As this is used in libc and we build it with
-Werror this warning becomes an error stopping the build.
2015-01-31 19:55:12 +00:00
loos
5e1a593992 Implement GPIO_GET_BUS() method for all GPIO drivers.
Add helper routines to deal with attach and detach of gpiobus and gpioc
devices that are common to all drivers.
2015-01-31 19:32:14 +00:00
loos
a2924f5fee Clean up and fix the device detach routine and the failure path on GPIO
drivers.

This paves the way for upcoming work.
2015-01-31 12:17:07 +00:00
rpaulo
ec79cdc8cf ti_pruss: make sure the mmap'ed memory region is uncacheable.
MFC after:	1 week
2015-01-31 02:12:57 +00:00
loos
e3f22b06c2 The BCM2835 GPIO controller uses has interrupt lines and not only one.
Allocate all four, we will use them soon.

Simplificate the allocation of memory and interrupt resources with a single
bus_alloc_resources() call instead of doing them separately.

Destroy the mutex in case of errors.
2015-01-30 18:18:09 +00:00
loos
638ef9136c Allow the retrieving of the reserved pins state.
With this change, it is now possible to verify the pin function and level
of reserved pins (but not set them).

The use of reserved pins on Raspberry pi can lead to short circuits and
real damage to the SoC.

While here, remove duplicated code, make use of OF_getencprop_alloc()
instead of using fixed sized variables and reduce the dmesg spam by
printing reserved pin ranges (when possible) instead of printing each pin
in the range.
2015-01-30 14:35:04 +00:00
loos
2f60094c0c Rename the avila, cambria and zynq GPIO driver names to match the expected
string.

With this change it is not necessary redeclare the driver relations with
gpiobus and gpioc.

This also prevents redundant declarations when gpiobusvar.h is included
(which is going to happen soon).
2015-01-29 18:08:50 +00:00
gonzo
fdcbb5500a Set LCDC clock frequency to 2*148500 KHz
Minimum LCDC is 2 so clock freq shouild be 2*max_pixel_clock. Maximum pixel
clock for HDMI is 148500 (1920x1080). But AM335x can not run in this mode
due to bandwidth and clock limitations
2015-01-29 01:59:42 +00:00
br
236c1b153d Add ARMv7 performance monitoring counters.
Differential Revision:	https://reviews.freebsd.org/D1687
Reviewed by:	rpaulo
Sponsored by:	DARPA, AFRL
2015-01-28 16:08:07 +00:00
br
ee153e65b0 Add a generic way for hooking PMC interrupt. 2015-01-26 10:31:17 +00:00
kib
927059a62b Ensure that _tmppt KVA is used exclusively by providing exclusive sx
lock around the mapping and uiomove().  Before r277643, it was
partially protected by Giant (but potential sleeping in fault from
uiomove() would still allow other thread to reuse the mapping).

Noted by:	ian
Reviewed by:	alc, ian
Sponsored by:	The FreeBSD Foundation
MFC after:	3 weeks
2015-01-26 10:11:55 +00:00
gonzo
b09edd53c9 - Increase default i2c bus timeout to 5 seconds from 1 second. Sometimes
1 second is not enugh for TDA19988 HDMI framer (e.g. on Beaglebone Black)
- Add per-device i2c_timout sysctl (dev.iichb.X.i2c_timeout) to control
    I2C bus timeout manually
- Pass softc instead of device_t to all sysctl handlers
2015-01-25 23:58:34 +00:00
gonzo
fad3fbbf45 Add vt(4) support to AM335x LCDC driver 2015-01-25 22:08:36 +00:00
br
b126e557b2 Add support for audio transmitting, include drivers for:
o Digital Audio Multiplexer (AUDMUX)
o Smart Direct Memory Access Controller (SDMA)
o Synchronous Serial Interface (SSI)

Disable by default as it depends on SDMA firmware.

Sponsored by:	Machdep, Inc.
2015-01-24 13:07:07 +00:00
kib
b8f7b5ec8d Remove Giant from /dev/mem and /dev/kmem. It is definitely not needed
for i386, and from the code inspection, nothing in the
arm/mips/sparc64 implementations depends on it.

Discussed with:	imp, nwhitehorn
Sponsored by:	The FreeBSD Foundation
MFC after:	3 weeks
2015-01-24 12:51:15 +00:00
gonzo
f4af1114dc After interrupt read value from register to make sure it reached hardware. This
should fix "Spurious inteerupt" message

Suggested by ian@
2015-01-24 01:53:28 +00:00
ian
46dec2e356 Add pinctrl driver support for the encoded input register config words
that the linux guys made up on the fly (but didn't document) last August.
This type of encoded config now appears in the imx6 fdt data.
2015-01-23 16:05:47 +00:00
ian
920fd43d82 Enable all the mmc/sd controllers, because there's no telling which ones
any given board will be using.

Yes, changing source is an unusually primitive power control implementation.
2015-01-23 01:18:08 +00:00
ian
f6d6d22c9f Declare Maxmem on arm. This should have been part of r277532. 2015-01-22 17:46:05 +00:00
ian
dcf4d630dc Add the Maxmem global and set it to the highest physical page number plus 1. 2015-01-22 17:42:30 +00:00
gonzo
d6dbac5a02 Add last_fault_code used in pmap-v6.c if kernel is compiled with "option DEBUG" 2015-01-22 03:33:51 +00:00
gonzo
6492a19e1d Write ACK for all kinds of LCDC interrupts 2015-01-22 03:32:04 +00:00
ian
9031260de2 Move the __aligned() declaration to where it will actually do something. 2015-01-21 21:31:26 +00:00
ian
33d6283946 Micro-optimize the new arm inline bus_space implementation by grouping all
the data the inline functions access together at the start of the bus_space
struct.  The start-of part isn't so important, it's the grouping-together
that's the point: now all the most-accessed data should be in one cache line.

Suggested by:	  cognet
2015-01-21 20:12:35 +00:00