freebsd-nq/sys/arm
Ian Lepore b450e1090d Call platform_pl310_init() before enabling the controller, and handle the
case where the controller is already enabled.

Some of the pl310 configuration registers cannot be changed while the
controller is active, so if there is any platform-specific init to be done
it must happen before enabling the controller.

The controller should not be enabled upon entry to the kernel, but u-boot
has recently developed the bad habit of leaving caches enabled when
launching the kernel, and since we have no control over that source code
we have to do our best to cope with it.  The PL310 manual doesn't document
a safe sequence for disabling the controller, but the sequence used here
(force write-through mode and disable linefill allocations, then clean and
invalidate the current contents before disabling the hardware) appears to
be sound both by analysis and empirical testing.

These changes were developed and tested in collaboration with
Svatopluk Kraus <onwahe@gmail.com>.

Reviewed by:	cognet@
2014-05-06 14:03:35 +00:00
..
allwinner Switch to my freebsd.org emal address in copyright. 2014-03-25 08:31:47 +00:00
arm Call platform_pl310_init() before enabling the controller, and handle the 2014-05-06 14:03:35 +00:00
at91 Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
broadcom/bcm2835 Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
cavium/cns11xx Move sys/arm/econa to sys/arm/cavium/cns11xx. 2014-04-07 05:33:30 +00:00
conf Fix the tinderbox armv6/arm build failure. 2014-05-03 03:40:36 +00:00
freescale Move duplicated code to print l2 cache config into the common code. 2014-04-27 23:47:38 +00:00
include Make this declaration into a proper function prototype. 2014-04-29 23:29:28 +00:00
lpc Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
mv Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
rockchip Switch to use arm_devmap_add_entry() to setup static device mapping. 2014-05-02 01:20:13 +00:00
s3c2xx0 Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
samsung/exynos Correct the end address of the video frame buffer. 2014-04-05 16:38:27 +00:00
tegra Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
ti Move duplicated code to print l2 cache config into the common code. 2014-04-27 23:47:38 +00:00
versatile Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00
xilinx Convert the Zynq SoC support to the new routines for static device mapping. 2014-04-30 14:38:13 +00:00
xscale Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c 2014-03-10 18:10:09 +00:00