Commit Graph

2708 Commits

Author SHA1 Message Date
Andrew Turner
b6c7dacfc9 Rework the Ti GPIO code to allow for both the OMAP4 and AM335X attachments
to be present. Thsi creates a new per-SoC driver that handles probe and
setting/getting the gpio flags.

Differential Revision:	https://reviews.freebsd.org/D943
Reviewed by:	loos, rpaulo
MFC after:	1 week
2014-10-18 17:51:34 +00:00
Rui Paulo
daed8c66c5 Remove an unused mutex.
MFC after:	1 week
2014-10-18 17:36:57 +00:00
Rui Paulo
b79090d6db Make the ti_mbox and ti_pruss drivers optional.
MFC after:	1 week
2014-10-18 17:00:55 +00:00
Rui Paulo
2ffc65f982 Add a driver for the TI watchdog.
The TI watchdog timer is present on BeagleBone's.  Since 2014, U-Boot
has been booting the BeagleBone with the watchdog enabled.  We need to
disable it on boot to avoid a spurious reset.
The timer isn't exactly precise, but it will do as a watchdog.  This
is also a reflection of the watchdog(9) API.

In the future, we could handle interrupts, but the watchdog(9) API
needs to be a bit smarter before that can happen.

Differential Revision:	https://reviews.freebsd.org/D965
Reviewed by:	andrew
MFC after:	1 week
Relnotes:	yes
2014-10-18 16:59:21 +00:00
Andrew Turner
5c8f95d56d Add an elf not so kgdb detects the kernel as a FreeBSD elf file. The
ELFNOTE macro is based on one from the FreeBSD/ARM Xen tree [1].

Obtained from:	Julien Grall <julien.grall AT linaro.org> [1]
2014-10-18 13:38:04 +00:00
Davide Italiano
2be111bf7d Follow up to r225617. In order to maximize the re-usability of kernel code
in userland rename in-kernel getenv()/setenv() to kern_setenv()/kern_getenv().
This fixes a namespace collision with libc symbols.

Submitted by:   kmacy
Tested by:      make universe
2014-10-16 18:04:43 +00:00
Rui Paulo
bbcf1f62b6 Remove the "Unable to unwind further" message from DDB.
The ARM version of DDB is supposedly reliable enough making this
message benign.
2014-10-16 01:48:39 +00:00
Andrew Turner
917256cd36 Uncomment general options from the Pandaboard config. These are in other
configs and there is no reason for them not to be here.
2014-10-14 14:32:58 +00:00
Andrew Turner
f7b9150ee9 Make the ti_padstate_devmap arrays ststic, they are only used with the
file where they are defined.
2014-10-14 13:24:25 +00:00
Andrew Turner
6e97fd7dbf Move the sdhci option to files.ti, it's common to both SoCs. 2014-10-13 16:40:40 +00:00
Andrew Turner
623b63e761 Use a switch on ti_chip() to find which SoC we are on. This allow us t
only enable support for the SoCs we are built for.
2014-10-13 16:33:08 +00:00
Andrew Turner
88e1e17451 Remove ti_mmchs.c, it has been replaced by ti_sdhci.c. 2014-10-13 16:20:04 +00:00
Andrew Turner
56f4208d56 Remove the need for files.beaglebone and std.beaglebone by moving the one
option they defined into files.am335x.
2014-10-13 16:16:32 +00:00
Andrew Turner
b0d1c7102e Sort the files in the am355x directory. 2014-10-13 16:12:28 +00:00
Andrew Turner
56d8b96cbc Start removing the omap3 support. In base it was only ever a header and a
few changes to drivers, no kernel config was added. As the SoCs are quite
old and the code is unmaintained start the process of removing support by
deleting the header file and code that depends on it along with the macro
SOC_OMAP3. Other Ti SoCs shouldn't be affected, other than for us to have
less code to maintain.

Differential Revision:	https://reviews.freebsd.org/D936
Reviewed by:	rpaulo, loos
2014-10-13 15:35:08 +00:00
Ruslan Bukin
d4d630aebe o Add machine-dependent SMP part
o Enable SMP

Sponsored by:	DARPA, AFRL
2014-10-10 14:35:51 +00:00
Mark Johnston
5eaae1411f Pass up the error status of minidumpsys() to its callers.
PR:		193761
Submitted by:	Conrad Meyer <conrad.meyer@isilon.com>
Sponsored by:	EMC / Isilon Storage Division
2014-10-08 20:25:21 +00:00
Ruslan Bukin
41709d23c4 Add driver for Synopsys DesignWare Mobile Storage Host Controller.
Sponsored by:	DARPA, AFRL
2014-10-07 17:39:30 +00:00
Ganbold Tsagaankhuu
0434c163cc Allow timer0 to run at full 24MHz not at 24MHz/16 by setting prescale to 1.
Approved by:    stas (mentor)
2014-10-02 06:00:55 +00:00
Andrew Turner
293b5c2221 Split you the syscall handling to a separate file. 2014-10-01 12:44:16 +00:00
Ian Lepore
3a79cdc73a When building the lists of available memory, actually honor the exclusion
flags, like the comment says it does.

Pointy hat:	ian
Submitted by:	Svatopluk Kraus <onwahe@gmail.com>
2014-09-30 21:28:05 +00:00
Andrew Turner
3a08e1e31c Make sure __ARM_ARCH is defined in sysreg.h by including acle-compat.h 2014-09-30 13:32:45 +00:00
Kevin Lo
b50afa88b0 Fix the definitioin of AT91SAM9G45_IRQ_PIOE and rename it to
AT91SAM9G45_IRQ_PIODE.  According to the data sheet, both PIOD and PIOE
use the same IRQ.

While here remove duplicate definitions.
2014-09-27 14:39:00 +00:00
Andrew Turner
1af789ed11 Add machine/sysreg.h to simplify accessing the system control coprocessor
registers and use it in the ARMv7 CPU functions.

The sysreg.h file has been checked by hand, however it may contain errors
with the comments on when a register was first introduced. The ARMv7 cpu
functions have been checked by compiling both the previous and this version
and comparing the md5 of the object files.

Submitted by:	Svatopluk Kraus <onwahe at gmail.com>
Submitted by:	Michal Meloun <meloun at miracle.cz>
Reviewed by:	ian, rpaulo
Differential Revision: https://reviews.freebsd.org/D795
2014-09-27 09:57:34 +00:00
Kevin Lo
ce71bdcad4 Remove a bogus AIC.
Reviewed by:	imp
2014-09-27 02:15:45 +00:00
Kevin Lo
bec21f7149 Fix the size of AT91SAM9260_PIT_SIZE. 2014-09-26 09:08:09 +00:00
Kevin Lo
d9197e6f81 Fix typos. 2014-09-26 09:07:02 +00:00
Ruslan Bukin
5d43fd685b Add driver for Synopsys DesignWare 3504-0 Universal 10/100/1000
Ethernet MAC.

Sponsored by:	DARPA, AFRL
2014-09-25 18:03:14 +00:00
Gavin Atkinson
265f42be76 Move the ARM Samsung s3c2xx0 support files into the samsung directory, to
match other platforms.

Discussed with:	andrew
2014-09-25 11:38:26 +00:00
Roger Pau Monné
c98a2727cc ddb: allow specifying the exact address of the symtab and strtab
When the FreeBSD kernel is loaded from Xen the symtab and strtab are
not loaded the same way as the native boot loader. This patch adds
three new global variables to ddb that can be used to specify the
exact position and size of those tables, so they can be directly used
as parameters to db_add_symbol_table. A new helper is introduced, so callers
that used to set ksym_start and ksym_end can use this helper to set the new
variables.

It also adds support for loading them from the Xen PVH port, that was
previously missing those tables.

Sponsored by: Citrix Systems R&D
Reviewed by:	kib

ddb/db_main.c:
 - Add three new global variables: ksymtab, kstrtab, ksymtab_size that
   can be used to specify the position and size of the symtab and
   strtab.
 - Use those new variables in db_init in order to call db_add_symbol_table.
 - Move the logic in db_init to db_fetch_symtab in order to set ksymtab,
   kstrtab, ksymtab_size from ksym_start and ksym_end.

ddb/ddb.h:
 - Add prototype for db_fetch_ksymtab.
 - Declate the extern variables ksymtab, kstrtab and ksymtab_size.

x86/xen/pv.c:
 - Add support for finding the symtab and strtab when booted as a Xen
   PVH guest. Since Xen loads the symtab and strtab as NetBSD expects
   to find them we have to adapt and use the same method.

amd64/amd64/machdep.c:
arm/arm/machdep.c:
i386/i386/machdep.c:
mips/mips/machdep.c:
pc98/pc98/machdep.c:
powerpc/aim/machdep.c:
powerpc/booke/machdep.c:
sparc64/sparc64/machdep.c:
 - Use the newly introduced db_fetch_ksymtab in order to set ksymtab,
   kstrtab and ksymtab_size.
2014-09-25 08:28:10 +00:00
Ian Lepore
6048caab6b Make the ARM MPCore Timer driver work with published standard FDT bindings.
We've always considered the mpcore timers to be a single monolithic device
and we defined our own fdt binding for it with our own compat string.  The
published bindings treat the timers as two separate devices, a global
timer and a "timer-watchdog" device for the per-cpu private timers.  Thus
our binding has two tuples in the regs property, one set of registers for
the global timer and one for the private timers.  The published bindings
have two separate devices, each with a single set of registers.  (Note that
we don't use the optional watchdog feature of the hardware.)

These changes add the compat strings for the published bindings.  If our
own compat string appears, we expect to get two sets of memory resources.
For the published bindings, there's only one set of memory resources, and
only the private timers have an associated interrupt.

The other major change is that there can no longer be a single global var
for the softc pointer because now there may be multiple devices at
runtime.  Since the global timer is used only as a timecounter and the
private timers only as eventtimers, and there will only be one of each,
those are now the pointers which are global, and the priv fields of those
structures backlink to the device softc.
2014-09-20 14:49:21 +00:00
Ganbold Tsagaankhuu
2fb98875cf Fix typo in comment.
Disable AHB clock gate for ehci0.

Approved by:	stas (mentor)
2014-09-20 09:18:58 +00:00
Gleb Smirnoff
6625a48525 Mechanically convert to if_inc_counter(). 2014-09-19 09:20:16 +00:00
Ian Lepore
7cb146ae26 The private peripheral interrupts start at offset 16, not 0. Also, use
names rather than inline mystery constants for these offsets.

Pointed out by:	andrew
2014-09-15 15:36:00 +00:00
Ian Lepore
952ded804e Use gic_decode_fdt() rather than a local routine to parse fdt interrupt
properties.  Move fdt_pic_table and fdt_fixup_table into imx6_machdep.c,
which means imx6 doesn't need imx_common.c anymore.
2014-09-14 23:48:18 +00:00
Ian Lepore
0e390441a7 Add a common routine for parsing FDT data describing an ARM GIC interrupt.
In the fdt data we've written for ourselves, the interrupt properties
for GIC interrupts have just been a bare interrupt number.  In standard
data that conforms to the published bindings, GIC interrupt properties
contain 3-tuples that describe the interrupt as shared vs private, the
interrupt number within the shared/private address space, and configuration
info such as level vs edge triggered.

The new gic_decode_fdt() function parses both types of data, based on the
#interrupt-cells property.  Previously, each platform implemented a decode
routine and put a pointer to it into fdt_pic_table.  Now they can just
list this function in their table instead if they use arm/gic.c.
2014-09-14 21:21:03 +00:00
Ian Lepore
4a396d7a67 Add compat strings for all the flavors of GIC this driver should support.
Also allow the driver to attach to ofwbus as well as simplebus, some FDT
data puts the root interrupt controller on the root bus.
2014-09-14 17:47:04 +00:00
Ian Lepore
67993f6aa7 Fix an undefined variable that was accidentally not causing an error.
The code had references to both intr_offset and intr_parent variable names
as referring to the parent interrupt node.  The intr_parent variable
wasn't actually defined anywhere, but the only references to it were as
an argument to a macro that didn't use that argument in expansion, so
the undefined variable accidentally didn't cause an error.

The intr_parent name makes more sense in context, so change all occurrances
of intr_offset to intr_parent.
2014-09-14 17:36:57 +00:00
Ian Lepore
20250ee1ab Add a comment giving an overview of the driver. Remove leftover debugging. 2014-09-14 16:12:43 +00:00
Ian Lepore
7ddf24b350 Replace the imx5 and imx6 iomux drivers with a single common driver that
uses the new fdt_pinctrl interface.
2014-09-13 20:09:34 +00:00
Ian Lepore
d6c7df9860 Convert the at91_pinctrl driver to use the new fdt_pinctrl interface. 2014-09-13 19:59:16 +00:00
John Baldwin
ace8dcfc8a - Don't let rman_reserve_resource() activate the resource in
nexus_alloc_resource() and don't set a bushandle.
  nexus_activate_resource() will set a proper bushandle.
- Implement a proper nexus_release_resource().
- Fix ixppcib_activate_resource() to call rman_activate_resource()
  before creating a mapping for the resource.

Tested by:	jmg
2014-09-12 20:34:19 +00:00
Ruslan Bukin
6ca0b78179 Add Reset Manager driver. This driver provides generic way to reset
and provides sysctl tunables for enable/disable FPGA<->HPS bridges.

Sponsored by:	DARPA, AFRL
2014-09-11 18:12:28 +00:00
Andrew Turner
fad7eeb196 Rename pmap_kenter_temp to pmap_kenter_temporary to be consistent with the
other architectures with this function.

Submitted by:	Svatopluk Kraus <onwahe at gmail.com>
Submitted by:	Michal Meloun <meloun at miracle.cz>
2014-09-11 10:53:57 +00:00
Andrew Turner
b8fd1e31d9 Unify interrupts bit definition and usage. While here remove PSR_C_bit.
Submitted by:	Svatopluk Kraus <onwahe at gmail.com>,
		Michal Meloun <meloun at miracle.cz>
Differential Revision: https://reviews.freebsd.org/D754
2014-09-10 15:25:15 +00:00
Andrew Turner
d7f129a3cb Add more register values to armreg.h and remove CPU_CONTROL_32BP_ENABLE
from asm.h as they were already defined in armreg.h.

Submitted by:	Michal Meloun <meloun at miracle.cz>
2014-09-10 13:38:52 +00:00
Andrew Turner
9ff96c2346 Move if_smc_fdt.c to live in sys/dev/smc. It's not specific to the ARM
Versatile hardware.
2014-09-10 10:59:17 +00:00
Ian Lepore
05e3ac86bf Rename new to newval in inline asm code, to avoid clashes with C++ new.
Also rename cmp to cmpval just to keep the asm variable names similar to
the C variable names.
2014-09-09 13:50:21 +00:00
Andrew Turner
89fd02846e When entering the kernel with the MMU off assume we are running from a
va == pa map.

I'm not sure the code would work if we are not running from the identity
map as the ARM core may attempt to read the next instruction from an
invalid memory location.
2014-09-07 21:46:54 +00:00
Andrew Turner
d5294df7d0 Remove Lvirtaddr and Lphysaddr, these don't appear to be used. 2014-09-07 19:33:38 +00:00