30 Commits

Author SHA1 Message Date
ian
64750d8ea3 Begin reducing code duplication in arm pmap.c and pmap-v6.c by factoring
out common code related to mapping device memory into a new devmap.c file.

Remove the growing duplication of code that used pmap_devmap_find_pa() and
then did some math with the returned results to generate a virtual address,
and likewise in reverse to get a physical address.  Now there are a pair
of functions, arm_devmap_vtop() and arm_devmap_ptov(), to do that.  The
bus_space_map() implementations are rewritten in terms of these.
2013-11-04 19:44:37 +00:00
ian
07ca1c7f05 Comments and style(9) only, no functional changes. 2013-11-03 22:55:33 +00:00
ian
eccd123c2c Bugfix: the attach routine needs to use the same table of fdt compat
strings that the probe routine used.
2013-11-02 22:44:35 +00:00
ian
c6c94a31ed Add a missing register definition. 2013-11-02 21:07:39 +00:00
ian
2ee9403e76 Add the Soc- / machine-dependent parts of imx6 support. 2013-11-01 00:21:09 +00:00
ian
2e042c64a7 Add definitions for the register and data that describes the SoC type.
This isn't in the chip reference manuals, it was found in u-boot and
various old mailing list threads.
2013-10-31 23:08:30 +00:00
ian
b925adfda1 Revamp the SoC identity numbering scheme to be more in line with the way
Freescale numbers the chips in the ID registers.
2013-10-31 23:05:05 +00:00
ian
b772b2d3ac Add sdhci driver glue for imx family SoCs. This should support both uSDHC
(newer SoCs) and eSDHC (older SoCs), but the eSDHC support is untested and
likely to need some tweaking.
2013-10-31 15:27:39 +00:00
ian
7702cb2654 Add stubbed-out imx6 support for clocks and power management. This
contains little more than a few stub functions required to keep the
linker happy, but it's enough to let early imx6 development proceed.
2013-10-31 15:04:23 +00:00
ian
055f49e0f5 Add support for the USB PHY on imx6 SoCs. Pretty minimal at this point,
but enough to get usb host mode working.
2013-10-31 14:52:06 +00:00
ian
909ab42304 Don't iterate through the bits of the pending interrupt register if the
whole register is zero.  Most of the registers will be zero most of the time.
2013-10-31 03:12:48 +00:00
ian
98a4ee4b55 Reset the timer interrupt status register at the top rather than bottom of
the interrupt handler.  If the event callback starts a new short timeout,
the timer can fire before returning from the event callback, and clearing
the interrupt status after that loses the interrupt and hangs until the
counter wraps.  Fixing all of this removes the need for the do-nothing
loop at the top of the handler which really just waited for the counter to
roll over and reach the one-shot count again.

Also add a missing return(0) in the periodic timer start case.
2013-10-31 02:11:35 +00:00
ian
9e3ae53cb8 Expand the list of compatible devices this driver works with. Increase
the target frequency from 1 to 10 MHz because these SoCs are plenty fast
enough to benefit from the extra event timer resolution.
2013-10-31 01:45:55 +00:00
ian
ea2972885f Add a "no-op" USB PHY driver for imx-family SoCs. This is used when the
phy clocks need to be enabled, but no other hardware setup is needed to
make the phy work.
2013-10-30 14:38:24 +00:00
ian
990c177bf4 Add some bare-bones support for enabling usb and usbphy clocks. This
is temporary code to keep imx development moving forward for now.  In
the long run we need a SoC-independant clock management API.
2013-10-30 14:33:15 +00:00
ian
7fa106116d Remove #include <machine/frame.h> from all the arm code that doesn't
really need it.  That would be almost everywhere it was included.  Add
it in a couple files that really do need it and were previously getting
it by accident via another header.
2013-10-27 01:34:10 +00:00
ian
6220605dae Remove all #include <machine/pmap.h> from arm code. It's already
included by vm/pmap.h, which is a prerequisite for arm/machine/pmap.h
so there's no reason to ever include it directly.

Thanks to alc@ for pointing this out.
2013-10-27 00:51:46 +00:00
ian
ed06be85d9 Maximize available kva space by doing static device mapping from the top
of the address space downwards, and then returning the lowest mapped
device address from initarm_lastaddr().  This adds over 500MB of kva
space compared to the old way of hardcoding the end address as 0xE0000000.

Also, pre-map most of the SoC's common memory-mapped devices using 1MB
section mappings so that all device access uses just a few TLB entries.
Graphics devices aren't mapped this way yet, but probably should be.

To provide this new functionality without pasting identical code into
multiple imxNN_machdep.c files, rework the imx machdep code so that
things common to the whole family of SoCs are in a new imx_machdep.c file.
The rewritten imxNN_machdep.c files contain just things specific to an
individual SoC.
2013-10-26 23:13:20 +00:00
ian
10e069d479 Add a driver for the Freescale Fast Ethernet Controller found on various
Freescale SoCs including the i.MX series.  This also works for the newer
SoCs with the ENET gigabit controller, but doesn't use any of the new
hardware features other than enabling gigabit speed.
2013-10-20 21:07:38 +00:00
ian
975a73b354 Switch to using the standard uart console driver instead of the special
driver for early boot debugging.
2013-10-20 21:03:15 +00:00
ian
377df33a54 Clock divisors 0-3 correspond to dividing by 1-4, so add 1 before dividing. 2013-10-19 21:33:06 +00:00
rpaulo
16cb93231c Revert accidental commit. 2013-09-02 17:07:46 +00:00
rpaulo
d8615bd83a Initial support for the Digi ConnectCore(c) i.MX53 / Wi-i.MX53 boards.
There are many drivers missing, but we can reach single user mode now.

Hardware graciously donated by Douglas Beattie.
2013-09-01 20:15:35 +00:00
ian
ddc35de90b Rename imx_machdep.c to imx51_machdep.c, because it contains hardware
addresses which are specific to the imx51 chips.
2013-08-13 21:12:28 +00:00
ian
14fc3cda65 Add imx6 compatibility and make the driver work for any clock frequency.
There are still a couple references to imx51 ccm driver functions that will
need to be changed after an imx6 ccm driver is written.

Reviewed by:	ray
2013-08-13 13:14:13 +00:00
ian
22800b9326 Tweak the imx debug console code so that it works with multiple SoCs.
Instead of hard-coding the uart register addresses for the imx51, use
a variable that defaults to the imx51 address.  When debugging another
imx-family SoC, the variable can be set early in initarm() to provide
full console/printf support for debugging early boot.
2013-08-03 13:31:10 +00:00
ian
0b4cdd16b0 Rename the existing std.imx and imx.files to std.imx51 and files.imx51, to
pave the way for adding imx6 support.
2013-07-28 17:37:30 +00:00
ray
ed41ecad2b Update copyright date. 2013-05-08 09:42:50 +00:00
dim
6a5be05861 Fix undefined behaviour in several gpio_pin_setflags() routines (under
sys/arm and sys/mips), squelching the clang 3.3 warnings about this.

Noticed by:	tinderbox and many irate spectators
Submitted by:	Luiz Otavio O Souza <loos.br@gmail.com>
PR:		kern/177759
MFC after:	3 days
2013-04-13 21:21:13 +00:00
ray
a88f1a3d13 Integrate Efika MX project back to home.
Sponsored by:	The FreeBSD Foundation
2013-03-20 15:39:27 +00:00