Commit Graph

2686 Commits

Author SHA1 Message Date
ian
72180190b3 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
4b0bbad692 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
4c51a22122 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
3c95d95104 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
3194bc3f0e 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
2b729668c7 Add a comment giving an overview of the driver. Remove leftover debugging. 2014-09-14 16:12:43 +00:00
ian
d999791b48 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
5f75e2409e Convert the at91_pinctrl driver to use the new fdt_pinctrl interface. 2014-09-13 19:59:16 +00:00
jhb
c6280e5ab7 - 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
br
e32ad75659 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
0808eece71 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
249f5cbad9 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
a363841a18 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
ae8d0bb549 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
b62cc0fb26 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
5a6147b0a1 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
eb057430f0 Remove Lvirtaddr and Lphysaddr, these don't appear to be used. 2014-09-07 19:33:38 +00:00
andrew
91e84ea8b0 Generalise the va to pa code and use it when starting secondary cores
Reviewed by:	ian@, rpaulo@
Differential Revision: https://reviews.freebsd.org/D736
2014-09-07 18:32:42 +00:00
andrew
f795ba00d0 Create a common i.MX53 config and use it with the two existing i.MX53
boards.

This is just intended to split the common config entries out, further
cleanup is expected.

Reviewed by:	ian@, rpaulo@ (earlier version)
Differential Revision: https://reviews.freebsd.org/D731
2014-09-07 08:16:27 +00:00
br
ac6b458116 o Remove __unused attribute on variables which actually used
o Unmagic 'configuration done' bit
o Move probe() to place before attach() for better navigation
o Use bus_read_n instead of bus_space_read_n functions

Pointed out by:	andrew
Sponsored by:	DARPA, AFRL
2014-09-06 18:08:21 +00:00
andrew
183409d941 Fixthe spelling of ehci 2014-09-06 17:33:41 +00:00
andrew
e54555ca52 Allow us to use the virtual timer. It is currently disabled, but should
be usable as the default timer in place of the physical timer.

We are guaranteed to have access to the virtual timer, but when running
under a hypervisor may not have access to the physical.

Differential Revision: https://reviews.freebsd.org/D588
2014-09-06 13:21:07 +00:00
br
bca742a609 Add FPGA Manager driver. This driver allows to program FPGA core
from FreeBSD userspace running on ARM core.

Sponsored by:	DARPA, AFRL
2014-09-06 08:48:57 +00:00
andrew
0203a50113 Add the virtual timer irq to the list of interrupts we enable on secondary
cores.
2014-09-05 19:00:30 +00:00
imp
588ebd48d9 Wrap some long lines. 2014-09-04 16:40:54 +00:00
ian
416f9e1b16 Implement the imx_iomux_get/set_gpr() interface for imx6. 2014-09-04 15:11:57 +00:00
ian
83ac506aba The iomux driver is no longer optional, all imx platforms have it as
standard now, so remove it from kernel configs.
2014-09-04 14:59:27 +00:00
ian
5bb6e38918 Implement the same public interface in imx51 and imx6 iomux; use the common
header file for both.  Remove some unused code from imx51_iomux.  The iomux
drivers are required, not optional, adjust the files.* entries accordingly.
2014-09-04 14:57:04 +00:00
ian
f8354988a6 Add a basic iomux driver for imx6.
Submitted by:	bsam@
2014-09-04 14:25:32 +00:00
ian
d0d0b3e450 Fix typo in variable name. 2014-09-04 13:13:42 +00:00
br
f3c6b45c01 Add initial support for Altera SOCFPGA (heterogeneous ARM/FPGA) SoC family.
Include board configuration for Terasic SoCKit (Altera Cyclone V).

Sponsored by:	DARPA, AFRL
2014-09-04 12:44:40 +00:00
ian
a5645731d2 The imx5x and imx6 chips have an onboard IOMUX device which also contains a
few "general purpose registers" whose values control chip behavior in ways
that have nothing to do with IO pin mux control.  Define a simple API that
other soc-specific code can use to read and write the registers, and provide
the imx51 implementation of them.
2014-09-04 03:04:37 +00:00
ian
623a0a7f34 Add a function to get the frequency of the AHB bus. Another stopgap
function until we have full clock support for imx6.
2014-09-03 21:45:39 +00:00
ian
f0e39e7a94 Remove DIAGNOSTIC from the kernel config of low-end arm systems. Sanity
checks such as vmem_check() can make a low-end system go completely
unresponsive for as much as 3 seconds out of every 10.
2014-09-03 19:37:41 +00:00
ian
6c396af20f Fixes and enhancements for the if_cgem driver...
- miibus fixes as suggested by Yonghyeon Pyun.
- enable VLAN MTU support.
- fix a few WITNESS complaints in cgem_attach().
- have cgem_attach() properly init the ifnet struct before calling
  mii_attach() to fix panic when using e1000phy.
- fix ethernet address changing.
- fix transmit queue overflow handling.
- tweak receive queue handling to reduce receive overflows.
- bring out MAC statistic counters to sysctls.
- add e1000phy to config file.
- implement receive hang work-around described in reference guide.
- change device name from if_cgem to cgem to be consistent with other
  interfaces.

Submitted by:	Thomas Skibo <ThomasSkibo@sbcglobal.net>
Reviewed by:	wkoszek, Yonghyeon PYUN <pyunyh@gmail.com>
2014-09-03 17:51:03 +00:00
ian
4a301de477 The anatop driver controls power and PLLs and needs to be available before
just about anything else (other than octop which provides it config info),
so make it an EARLY_DRIVER_MODULE().
2014-09-02 02:56:43 +00:00
ian
aa9c0a89c8 The ocotp driver provides access to registers containing chip configuration
data that is needed by other drivers, so make it an EARLY_DRIVER_MODULE()
that loads before just about anything else.
2014-09-02 02:54:55 +00:00
ian
88a0db453e sdhci.h has grown a dependency on sysctl.h, include the latter where needed. 2014-09-01 19:20:34 +00:00
ian
b149a9e7ae Rename OF_xref_phandle() to OF_node_from_xref() and add a new function
that provides the inverse translation, OF_xref_from_node().

Discussed with:	nwhitehorn
2014-09-01 18:51:01 +00:00
ian
29964973d5 Do not generate unwind info in asm functions if _STANDALONE is defined.
The .fnend op causes the assembler to emit RELOC references to unwind
support functions that don't exist in libstand.
2014-09-01 14:57:04 +00:00
imp
bb7334d257 Resync comments about scbus and pass for life after AHCI joined CAM.
Sponsored by: Netflix
2014-09-01 03:49:21 +00:00
br
6966b29ce7 GIC (Cortex A's interrupt controller) supports up to 1020 IRQs. 2014-08-31 17:40:19 +00:00
ian
ce798c0efa Put option FDT into the base IMX6 config and remove it from the config
of boards based on IMX6.
2014-08-31 15:25:40 +00:00
ian
e9c87a9fb0 The Marvell PJ4B cpu family is armv7, not armv6. 2014-08-31 15:23:49 +00:00
ian
60d54c4d44 Fix the handling of MMU type in the AP entry code. The ARM_MMU_V6/V7
symbols are always #defined to 0 or 1, so use #if SYM not #if defined(SYM).
Also, it helps if you include the header file that defines the symbols.
2014-08-30 22:21:57 +00:00
tuexen
bfed131329 Enable SCTP support. It runs perfectly fine on a Wandboard quad.
MFC after: 3 days
2014-08-30 20:18:47 +00:00
tuexen
d3e631fbce Remove FDT option, since it is in every file, which includes this one. 2014-08-30 20:00:18 +00:00
loos
01adfcd353 Rewrite of ti_i2c based on gonzo's patch, fix the following bugs/problems:
. interrupt storm detected on "intr70:"; throttling interrupt source;

  . Added access serialization on iicbus_transfer(), previously there was
    no such protection and a new transfer could easily confuse the
    controller;

  . Add error checkings (i.e. stop the transfer when a error is detected
    and do _not_ overwrite the previous error);

  . On command done interrupt do not assume that the transfer was finished
    sucessfully as we will receive the command done interrupt even after
    errors;

  . Simplify the FIFO handling;

  . Reset the FIFO between the transfers as the FIFO may contain data from
    the last (failed) transfer;

  . Fix the iicbus speed for AM335x, which in turn will make better use of
    the I2C noise filter (set to one internal clock cycle);

  . Move the read and write handler to ithread instead of notifying the
    requesting thread with wakeup(9);

  . Fix the comments based on OMAP4 TRM.

The above changes allows me to read the EDID from my HDMI monitor on BBB
with gonzo's patches to support TDA19988 (which does 128 bytes reads) and
repeatedly scan the iicbus (with a modified i2c(8)) without lock up the bus.

Phabric:	D465
2014-08-20 17:02:37 +00:00
imp
f7f2052abf Make note about reset vs RTOE actions... 2014-08-18 21:04:35 +00:00
imp
1724e459fe /usr/libexec/ld.so.1 never was a thing on FreeBSD/arm. This was the
FreeBSD 3.x and 4.x run time linker. FreeBSD/arm's first release was
5.0. Retire this long-dead code.
2014-08-18 02:45:06 +00:00