Commit Graph

1839 Commits

Author SHA1 Message Date
Alan Cox
e95f0abb09 Add support for mincore(). Specifically, this is an adaptation of the
pmap_mincore() implementation that was added to the original arm pmap
in r235717.
2012-09-29 17:20:16 +00:00
Alan Cox
208d06cea8 Update a comment to reflect recent locking changes. 2012-09-29 08:11:12 +00:00
Alan Cox
703205f3c6 Implementing pmap_kextract(va) as pmap_extract(kernel_pmap, va) is
problematic because some callers to pmap_kextract() expect its
implementation to be lock-less.  In particular, uma_dbg_alloc() implicitly
requires this.  Otherwise, lock-order reversals occur between pmap locks and
UMA zone locks.  So, this change introduces a lock-less implementation of
pmap_kextract().

Disable recursion on the pvh global lock in the new armv6 pmap.  While
recursion on this locks occurs in the old arm pmap, it thankfully doesn't
occur in the armv6 pmap.

Tested by:	jmg
2012-09-27 05:39:42 +00:00
Andrew Turner
2193c1b48a Create the new initarm_ functions to reduce the diff to the other FDT
versions of initarm
2012-09-26 10:07:53 +00:00
Andrew Turner
a9111e46bc Use arm_dump_avail_init to build the dump_avail array 2012-09-26 09:27:38 +00:00
Andrew Turner
f902e2e2d3 Start to clean up the lpc initarm as it also uses FDT. 2012-09-26 09:25:31 +00:00
Alan Cox
c4fc9c14c2 Eliminate an unused declaration. 2012-09-25 03:59:10 +00:00
Andrew Turner
c2257f93ba Clean up the bcm2835 initarm. It is now identical to the other ARMv6 copies
Tested by:	Alexander Yerenkow
2012-09-23 19:48:29 +00:00
Andrew Turner
610ba83a97 Fix a typo in a Broadcom initarm debug printf 2012-09-23 08:49:41 +00:00
Andrew Turner
1f008b99cc Pull out the SoC specific parts of initarm into separate functions 2012-09-23 03:46:03 +00:00
Andrew Turner
70203625fb Update different versions of physmap_init to be identical in preparation
for merging them.
2012-09-23 02:01:59 +00:00
Andrew Turner
d98d8a1e83 Reduce the diff between the FDT implementations of initarm.
This only touches whitespace and comments.
2012-09-22 22:41:38 +00:00
Alan Cox
6b7d314db2 Since UMA_ZONE_NOFREE is specified when l2zone and l2table_zone are created,
there is no need to release and reacquire the pmap and pvh global locks
around calls to uma_zfree().  Recursion into the pmap simply won't occur.

Eliminate the use of M_USE_RESERVE.  It is deprecated and, in fact, counter-
productive, meaning that it actually makes the memory allocation request
more likely to fail.

Eliminate the macros pmap_{alloc,free}_l2_dtable().  They are of limited
utility, and pmap_free_l2_dtable() was inconsistently used.

Tidy up pmap_init().  In particular, change the initialization of the PV
zone so that it doesn't span the initialization of the l2 and l2table zones.

Tested by:	jmg
2012-09-22 06:54:03 +00:00
Andrew Turner
1161298251 Create a common set_stackptrs in sys/arm/machdep.c.
On single core devices set_stackptrs is only ever called with cpu = 0 in
initarm and will be identical to the existing function. On SMP this needs
to be implemented for sys/arm/mp_machdep.c, but the implementations are
identical for each SoC.
2012-09-22 06:41:56 +00:00
Andrew Turner
71f5a44d88 Add a kernel config for the Toshiba AC100. The AC100 is an ARM laptop with
an NVidia Tegra 2 CPU.

Tegra 2 needs an external patch to pmap for atomic operations to work. Even
with this the Kernel only gets to the mount root prompt. As such Tegra
support is considered experimental, however adding the kernel config will
help ensure the Tegra code builds.
2012-09-17 09:22:59 +00:00
John-Mark Gurney
3dad5721a6 fix the kernel files to match our standard "option<space><tab>" format
such that when commenting/uncommentting lines, horizontal spacing is
maintained...

Also fix some minor comment formatting to line things up, etc...

Reviewed by:	gnn, imp
MFC after:	1 week
2012-09-16 19:48:48 +00:00
John-Mark Gurney
2b539bdcb3 remove some unnecessary debugging statements, dead code and incorrect
comment...

Reviewed by:	gnn, imp
2012-09-16 19:42:27 +00:00
Andrew Turner
4f06dcbd80 Start to clean up ARMv6 initarm implementations by making the Tegra 2
version similar to the Ti version.
2012-09-16 08:09:10 +00:00
Andrew Turner
7b0aff3920 In the Tegra 2 standard config:
* Remove an unneeded makeoption
 * Set machine correctly
 * Properly indent the include of files.tegra2
2012-09-16 08:00:29 +00:00
Andrew Turner
5be63cab1c The cpu_reset function is noreturn, make sure this is true on Tegra 2.
While here fix a typo.
2012-09-16 07:55:49 +00:00
Alan Cox
1913678b8d Eliminate an unused malloc type. 2012-09-15 17:32:19 +00:00
Eitan Adler
96240c89f0 Correct double "the the"
Approved by:	cperciva
MFC after:	3 days
2012-09-14 21:28:56 +00:00
Grzegorz Bernacki
64dc1cf395 Implement MSI support.
MSI are implemented via Inbound Shared Doorbell 1 interrupts. Interrupts
are triggered by writing to Software Triggered Interrupt registeri (PCIe
card using physical address of this register in BAR0 space). There are 32
interrupts available. It can be increased by using Doorbell 2 and
Doorbell 3 registers to 96 interrupts.

Obtained from:	Marvell, Semihalf
2012-09-14 10:06:56 +00:00
Grzegorz Bernacki
aa0ea9d07a Add support for MSI in interrupt controlller.
MSI are implemented via software interrupt. PCIe cards will write
into software interrupt register which will cause inbound shared
interrupt which will be interpreted as a MSI.

Obtained from:	Marvell, Semihalf
2012-09-14 10:05:01 +00:00
Grzegorz Bernacki
373bc54ab1 Remove unused structure fields
Obtained from:	Semihalf
2012-09-14 10:01:52 +00:00
Grzegorz Bernacki
4c641b9a6a Enable PCI for Armada XP
Obtained from:	Semihalf
2012-09-14 09:59:27 +00:00
Grzegorz Bernacki
e3ac97538c pci: Implement new memory and io space allocator for PCI.
Cleanup code and move initializing bridge into separate function.
Add checking of PCI mode (RC or endpoint).

Obtained from:	Semihalf
2012-09-14 09:57:41 +00:00
Grzegorz Bernacki
d65cdf4b9d Add support for Armada XP A0.
- Add functions to calculate clocks instead using hardcoded values
- Update reset and timers functions
- Update number of interrupts
- Change name of platform from db88f78100 to db78460
- Correct DRAM size and PCI IRQ routing in dts file.

Obtained from:	Semihalf
2012-09-14 09:55:19 +00:00
Grzegorz Bernacki
f3d01034bc Support identification of new PJ4B cores.
Obtained from:	Semihalf
2012-09-14 09:38:54 +00:00
Hans Petter Selasky
db18ca3677 Add basic USB support to Raspberry PI target. 2012-09-14 08:11:59 +00:00
Alan Cox
0b35b54b4d Simplify the kernel pmap locking in pmap_enter_pv(). While I'm here, tidy
up the comments and whitespace.

Tested by:	cognet
2012-09-13 06:16:49 +00:00
Hans Petter Selasky
08bfef24af Add device entry for DWC OTG. 2012-09-11 22:13:37 +00:00
Alan Cox
347ebd12db Replace all uses of the vm page queues lock by a r/w lock that is private
to this pmap.

Revise some comments.

The file vm/vm_param.h includes the file machine/vmparam.h, so there is no
need to directly include it.

Tested by:	andrew
2012-09-10 16:27:19 +00:00
Hans Petter Selasky
dabf69b257 Add support for DWC OTG. 2012-09-09 14:51:38 +00:00
Alan Cox
b95d8becdb Eliminate an unused macro. 2012-09-07 01:33:25 +00:00
John Baldwin
30b5db9fea Dynamically allocate the S/G lists passed to callback routines rather than
allocating them on the stack of various bus_dmamap_load*() functions.  The
S/G lists are stored in the DMA tags.  This matches the implementation on
all other platforms.

Discussed with:	scottl, gibbs
Tested by:	stas (arm@)
2012-09-06 20:16:59 +00:00
Alan Cox
1e3510089f There is no need to release the pvh global lock around calls to
pmap_get_pv_entry().  In fact, some callers already held it around calls.
(In earlier versions, the same statements would apply to the page queues
lock.)

While I'm here tidy up the style of a few nearby statements and revise
some comments.

Tested by:	Ian Lepore
2012-09-06 16:26:04 +00:00
Alan Cox
059fb00f23 Replace all uses of the vm page queues lock by a r/w lock that is private
to this pmap.

Tested by:	Ian Lepore
2012-08-31 02:59:44 +00:00
Oleksandr Tymoshenko
1b1a53cf46 Add barebone Raspberry Pi port. Supported parts:
- Interrupts controller
  - Watchdog
  - System timer
  - Framebuffer (hardcoded resolution/bpp)
2012-08-30 20:59:37 +00:00
Warner Losh
863d605966 4-wire mode isn't working quite right, so turn it off for a bit. 2012-08-29 06:43:28 +00:00
Warner Losh
f22f156e0b Make this work on the AT91SAM9G20:
o Disable multi-block operations: they sometimes fail.
o Don't use the PROOF bits yet: they hang the system hard.
o Disable the the multi-block operations for !rm9200, but it
  still doesn't help.
o Fix writing < 12 bytes errata to actually work.
o Enable, for the moment, reporting extra bytes soaked up.
2012-08-29 06:42:39 +00:00
Warner Losh
683bb97c9f When copying data, use memcpy instead of bcopy. It matches the
arguments better.
Also, set the need to use the workaround flag before we actually need
to use it, rather than after.
2012-08-29 04:41:25 +00:00
Warner Losh
062223cd29 Make AT91_MCI_ALLOW_OVERCLOCK a real option. Rename old use 30MHz to
this new option.  Only try to use > 25MHz when our best frequency is <
15MHz and overclocking is enabled. Fix minor style chaff.
2012-08-28 17:27:46 +00:00
Warner Losh
d7f8f1facd Clip the upper end to 31MHz for slow clock speeds. On faster
machines, we wind up with a 66MHz clock, which is too fast.
2012-08-28 14:19:10 +00:00
Warner Losh
f589a026d5 Move to using a flag instead of checking the CPU type each
transaction for the MCI1 rev 2.x write workarounds.
2012-08-28 03:46:31 +00:00
Warner Losh
c35e1c5bbc Style: Move these routines to be before the forward declared functions
as is the normal practice.
2012-08-28 03:27:48 +00:00
Warner Losh
0f30f5d36b Bring in the multi-block patches for mci. These required extensive
restructuring of the driver.  I've tried to preserve the other silicon
workarounds that we've added over the years, but haven't had a chance
to extensively test on other hardware.  On my AT91RM9200 with 30MHz/1
wire/64 block transfers, I've been able to go from ~.66MB/s to
2.25MB/s in the simple tests I performed, almost a 3.5x improvement.
This cuts the boot time almost in half when everything else goes
right (timed from rtc message to login: prompt).

PR:		155214
Submitted by:	Ian Lapore
2012-08-28 01:28:52 +00:00
Tim Kientzle
0be65db279 Correctly fetch the MAC address.
Break down the bytes directly into the softc;
the intermediate buffer isn't needed here.
Break down the bytes in the correct order.
2012-08-27 04:43:30 +00:00
Warner Losh
bb6e4fd030 Add hint and sysctl support for 4 wire mode.
PR:		155241
Submitted by:	Ian Lapore
2012-08-27 04:30:53 +00:00
Warner Losh
f535f4234a Minor style(9) nit. 2012-08-27 04:08:43 +00:00
Warner Losh
b8e36ef7e0 Don't puprosely overclock the SD bus to 30MHz, make the user
explicltly enable that.  The driver chose to use 60MHz / 2 (30MHz)
most of the time rather than 60MHz / 4 (15MHz) based on the Linux
driver of the time.  This pushes the spec a little in order to not
suffer the penalty of running at 15MHz.  However, when other bus
masters are active in the system, and the user tries 4-wire mode, the
internal bus arbitration would fail with data loss as a result.

# Comments from PR were reworked to reflect my historical perspective

PR:		155214 (partial)
Submitted by:	Ian Lepore
2012-08-27 04:03:49 +00:00
Oleksandr Tymoshenko
b9fa17aeba Add ARM11 support for elf trampoline 2012-08-26 02:34:03 +00:00
Oleksandr Tymoshenko
8f2a36c073 Add support for ARM11 cpufunc
Obtained from:	NetBSD (partially)
2012-08-26 02:23:21 +00:00
Glen Barber
67944c4572 Grammar fix: s/NIC's/NICs/
MFC after:	3 days
2012-08-26 01:21:02 +00:00
Oleksandr Tymoshenko
7ff5220e81 Call set_pcpu for ARMv6 architecture too 2012-08-26 00:53:00 +00:00
Oleksandr Tymoshenko
62b4972abb Merge fix for hang on ARM11 from NetBSD 2012-08-26 00:46:57 +00:00
Oleksandr Tymoshenko
e1f04cd024 Piggyback MIPS changes and add ARM syscons support for devices with
framebuffer

While here - sort #if defined() order alphabetically
2012-08-25 23:59:31 +00:00
Oleksandr Tymoshenko
5b88bb19d6 Style cleanup 2012-08-25 21:13:00 +00:00
Oleksandr Tymoshenko
46ad39d5a6 ARM11 might have more then 32 interrupts, e.g. BCM2835: 72 interrupts 2012-08-25 20:13:19 +00:00
Oleksandr Tymoshenko
bda493d611 Add clrex, strex , ldrex, strex and variants
Submitted by:	Alexander Rybalko
2012-08-25 20:01:31 +00:00
Warner Losh
6e31adaf33 Fetch the chip select in the bridge driver, like all the other spi
bridges do.
2012-08-23 22:38:37 +00:00
Warner Losh
fe49e25285 Use proper resource type when freeing.
Submitted by:	Ian Lapore (indirectly in a larger patch)
2012-08-23 21:31:52 +00:00
Oleksandr Tymoshenko
8634a69af0 Do not change "cachable" attribute for DMA memory allocated with
BUS_DMA_COHERENT attribute

The minimum unit for changing "cachable" attribute is page, so call
to pmap_change_attr effectively disable cache for all pages that newly
allocated DMA memory region spans on. The problem is that general-purpose
memory could reside on these pages too and disabling cache might affect
performance. Moreover ldrex/strex operators raise Data Abort exception
when accessing memory on page with "cachable" attribute off.

BUS_DMA_COHERENT does nto require memory to be coherent. It just suggests
to do best effort for reducing synchronization overhead.
2012-08-22 22:48:50 +00:00
Tim Kientzle
cddf6d2a33 After r239366, fix the ti_edma3.c driver to use the
exact name as used in the FDT.
2012-08-22 05:14:59 +00:00
Hans Petter Selasky
94d6bc8895 Make some at91_pcm_xxx() functions NULL safe. 2012-08-21 19:55:24 +00:00
Hiroki Sato
8bfdf49b97 - Calculate the I2C baud rate to keep them <100 kHz under different TCLK
frequencies.  The maximum freqency is 100 kHz according to the datasheet.

- Add child device probing support based on the device tree.  It now tries to
  find i2c-address property in the tree and attach the device with given slave
  address to iicbus.
2012-08-21 17:49:20 +00:00
Hiroki Sato
e664505cb9 Add mvts(4) driver for internal thermal sensor found on 88F6282 and 88F6283.
The temperature value will be exported via sysctl like this:

dev.mvts.0.temperature: 52.1C
2012-08-18 12:37:07 +00:00
Hiroki Sato
8f2853bf65 Sort IDs. 2012-08-18 12:20:51 +00:00
Hiroki Sato
b65df1c2c6 Fix build when DEBUG is defined. 2012-08-18 12:08:04 +00:00
Hiroki Sato
959bd21bec - MV_DEV_88F6282 has 256KB 4-way L2 cache.
- Sort IDs in win_cpu_can_remap() and remove MV_DEV_MV78100 because it is
  included in MV_DEV_DISCOVERY.
- Add MV_DEV_MV78XXX to xor_max_eng().
2012-08-18 11:40:55 +00:00
Hiroki Sato
d542454787 Fix a bug that could fail to initialize GPIO pins specified in "gpios" because
"gpio-controller" property at the controller node was always ignored.
2012-08-18 11:33:21 +00:00
Andrew Turner
71ea858b0e Remove machine from the LN2410SBC config, it is set by std.s3c2410 2012-08-18 05:52:17 +00:00
Andrew Turner
19a0f7f9cb Set machine correctly on ARM. This allows universe to use the correct world
when building each kernel.

Reviewed by:	imp
2012-08-18 05:48:19 +00:00
Rui Paulo
8c09f7b626 The GPIO drivers were initialising their mutexes with type of
MTX_NETWORK_LOCK. This is wrong since these mutexes have nothing to do
with networking.
2012-08-17 04:44:57 +00:00
Warner Losh
06832193b8 Preliminary Embest ATEB9200 support. 2012-08-16 05:03:59 +00:00
Warner Losh
406be9ffb1 Hmmm, somehow this file was completely deleted, rather than just
having the bogus lines being removed.
2012-08-16 04:53:30 +00:00
Warner Losh
bc41a42d6b Remove unused hints. 2012-08-16 04:49:23 +00:00
Oleksandr Tymoshenko
cf0df2b399 Unbreak build for the rest of AT91 platforms 2012-08-15 18:33:58 +00:00
Jakub Wojciech Klama
9b9bddf7c8 Switch lpc initarm() to use struct arm_boot_params and therefore fix
EA3250 kernel build.

Approved by:	gonzo
2012-08-15 18:18:29 +00:00
Oleksandr Tymoshenko
b208396ea3 Unbreak ATMEL kernel build 2012-08-15 08:34:31 +00:00
Oleksandr Tymoshenko
d3b496875a Specify architecture for assembler 2012-08-15 07:00:34 +00:00
Oleksandr Tymoshenko
e53470fee3 Merging of projects/armv6, part 10
- Support for Texas Instruments SoCs:
	- AM335x
	- OMAP4

- Kernel configs, DTS for Beaglebone and Pandaboard

Submitted by:	Ben Gray, Damjan Marion
2012-08-15 06:31:32 +00:00
Oleksandr Tymoshenko
9dfe4a1fa4 Merging of projects/armv6, part 9
Very basic support for Nvidia Tegra2: timer, interrupts, UART.

Submitted by:	Damjan Marion <dmarion@freebsd.org>
2012-08-15 06:06:43 +00:00
Oleksandr Tymoshenko
7a8988194d Merging of projects/armv6, intermission
Add configs missed in previous commits:
    - ARMADA XP
	- Embedded Artists EA3250
2012-08-15 05:55:16 +00:00
Oleksandr Tymoshenko
8dee0fd04c Merging of projects/armv6, part 8
r235162:

  Initial LPC32x0 support. Includes DTS file for Embedded Artists EA3250
  board.

  Peripherals currently supported:
  - Serial ports
  - Interrupt controller
  - Timers
  - Ethernet
  - USB host
  - Framebuffer (in conjunction with SSD1289 LCD controller)
  - RTC
  - SPI
  - GPIO

Submitted by:	Jakub Wojciech Klama <jceel@freebsd.org>
2012-08-15 05:37:10 +00:00
Oleksandr Tymoshenko
16694521fe Merging of projects/armv6, part 7
Add Marvell ARMADA XP support

Obtained from:	Marvell, Semihalf
2012-08-15 05:15:49 +00:00
Oleksandr Tymoshenko
cf1a573f04 Merging projects/armv6, part 1
Cummulative patch of changes that are not vendor-specific:
	- ARMv6 and ARMv7 architecture support
	- ARM SMP support
	- VFP/Neon support
	- ARM Generic Interrupt Controller driver
	- Simplification of startup code for all platforms
2012-08-15 03:03:03 +00:00
Andrew Turner
d2a3296d1a Move the decoding of the swi instruction to the syscall function. With the
ARM EABI the syscall value will be moved to a register to ease adding thumb
support. When this happens decoding of the instruction will no longer be
required.
2012-08-11 05:58:56 +00:00
Warner Losh
56c265f2f9 Correct the PLLA setting functions and centralize. 2012-08-11 05:45:19 +00:00
Warner Losh
bcc1a5425a Update comments about setting PLLA and refernce the tables in the
datasheet that express the limits.
2012-08-11 05:12:46 +00:00
Warner Losh
19b89339dc Don't use C++ comments. 2012-08-11 05:03:30 +00:00
Warner Losh
cb8b429ed3 More comments about setting PLLA, or rather that we never do. 2012-08-10 04:48:06 +00:00
Warner Losh
e2af3b9a86 Add charge pump current register. 2012-08-10 04:47:20 +00:00
Konstantin Belousov
1c771f9222 After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason
to pull vm_param.h was removed.  Other big dependency of vm_page.h on
vm_param.h are PA_LOCK* definitions, which are only needed for
in-kernel code, because modules use KBI-safe functions to lock the
pages.

Stop including vm_param.h into vm_page.h. Include vm_param.h
explicitely for the kernel code which needs it.

Suggested and reviewed by:	alc
MFC after:    2 weeks
2012-08-05 14:11:42 +00:00
Andrew Turner
c75943da26 Correctly return EFAULT in copyin & copyout on a fault. This fixes NFS
when running FreeBSD on QEMU emulating a Gumstix board.

While here remove the use of a magic number in the not-XScale version.

Pointed out by:	kib
Reviewed by:	stas
2012-08-04 05:38:25 +00:00
Andrew Turner
bfba812656 Ensure we align the stack to 8 bytes in system calls.
This is not strictly required with the current ABI but will be when we
switch to the ARM EABI. The aapcs requires the stack to be 4 byte aligned
at all times and 8 byte aligned when calling a public subroutine where the
current ABI only requires sp to be a multiple of 4.
2012-08-04 05:31:26 +00:00
Warner Losh
adebcba798 Prefer ate over macb. macb doesn't work anymore, and ate has more
errata workarounds in it.
2012-07-31 19:41:12 +00:00
Warner Losh
8203a40e4d Note about where we can boot this. 2012-07-31 19:39:21 +00:00
Warner Losh
679d446fde Allow chip selects other than 0. The SAM9260EK board
has its dataflash on CS1.
2012-07-31 19:14:22 +00:00
Warner Losh
1d35c178d8 macb doesn't work, switch to ate. 2012-07-31 04:09:27 +00:00
Warner Losh
336a1fd275 These files will support the whole at91sam9x5 family when done,
so rename them now before they get copied further afield...
2012-07-30 21:30:43 +00:00
Warner Losh
29b71fbb75 List the members of the AT91SAM9G45 family. 2012-07-30 21:19:19 +00:00
Warner Losh
3ab2f2eb3e Fix a couple of comments about the rm9200, and fix a couple of indentation
issues.  Add note that we need to implement at91sam9260 erratum workaround.
2012-07-30 06:00:31 +00:00
Warner Losh
9a5d82ab30 Commit the dci (gadget) support to the one ATMEL kernel config where
it might actually work.
2012-07-29 04:28:29 +00:00
Warner Losh
efd53ca820 Add usb_template for the gadget support. Even though this isn't a
bootable kernel, its config will likely be copied to places that are.

Submitted by:	Hans Petter Selasky
2012-07-29 04:26:24 +00:00
Hiroki Sato
c8953e1273 Add support for Marvell 88F6282.
Sponsored by:	Plat'Home, Co.,Ltd.
2012-07-28 21:56:24 +00:00
Warner Losh
fe1557c11c Add gadget devices. Not yet added to the child lists, but here to
keep things from bit-rotting.
2012-07-27 17:32:01 +00:00
Warner Losh
6ecf8b7749 Add the usb device (gadget) side of things. Also add ehci bindings
while I'm here in anticipation of usb2 support for newer SoCs.

Requested by:	Hans Petter Selasky
2012-07-27 17:31:19 +00:00
Warner Losh
43d1af0df3 Neither of these systems has PCI, but they do have ohci interface, so
fix comments.
2012-07-27 17:07:54 +00:00
Warner Losh
954bfb8bbf Add new at91sam9g45 support and sn9g45 board to the ATMEL kernel.
Adapt SN9G45 board support to cope with multi-board.
2012-07-27 16:38:02 +00:00
Warner Losh
0ff8c4269b Document the dataflash/mmc-sd issue. Add umass driver and usb. Boot
off da0s1a instead of ate0.  Note that MMC/SD is slot B.  Until I
switch over to NAND boot, dataflash booting will preclude having SD
cards inserted at boot, so this last bit is untested.

My SAM9260-EK not boots to multi-user prompt.
2012-07-27 05:37:01 +00:00
Warner Losh
e69d4e1fbd Turns out the ETHERNUT5 isn't anything like the SAM9260-EK. Make this
board init match better: UART1 instead of UART2, No RMMI, no SPI0, SPI1
comments.
2012-07-27 05:33:55 +00:00
Warner Losh
5880116cbf Add (back?) ohci atmel attachment. 2012-07-27 05:28:02 +00:00
Warner Losh
bed6d97e74 Trim read/write sizes to 128 bytes. Pages are only 128 bytes in size.
Writes larger than this will wrap to the same page.  Reads larger than
this are permitted, but why take chances.
2012-07-26 16:34:21 +00:00
Andrew Turner
aaa1966f6b Add support for the DesignA Electronics Snapper9g45 System on Module.
Reviewed by:	imp
2012-07-26 08:05:28 +00:00
Andrew Turner
25d95ee2cc Add support for the Atmel AT91SAM9G45 CPU.
Reviewed by:	imp
2012-07-26 08:01:25 +00:00
Warner Losh
045da1cf0e Some models have 6 USARTS + DBGU. Set a consistent name. 2012-07-26 05:46:56 +00:00
Warner Losh
1665e3cdfe Fix typo in comment.
spibus uses cs= rather than addr=, so fix hints to use that (nop since
	spibus cs defaults to 0, and at91_spi assumes 0).
2012-07-26 05:37:36 +00:00
Warner Losh
d68081b0b1 Update partitions to reflect "sam9 demo" defaults.
Update i2c devices to just include the eeprom.
Update dataflash chip select to be CS 1 (this doesn't work yet and
	needs changes to at91_spi and the spibus infrastructure).
Fix typo in comment.
2012-07-26 05:35:10 +00:00
Oleksandr Tymoshenko
86bce74937 Move unmask IRQ function call up to nexus device level.
FDT-enabled targets were broken after r238043 that relies
on device up the hierarchy to properly setup interrupt.
nexus device for ARM platforms did job only partially:
setting handler but not unmasking interrupt. Unmasking
was performed by platform code.

Reviewed by:	andrew@
2012-07-17 03:18:12 +00:00
Warner Losh
17fda71d9f These were never used, remove them. 2012-07-15 06:08:11 +00:00
Warner Losh
eac2306319 Configure the peripheral pins for MCI devices. Eliminate the now-unused
at91_pio_rm9200.h.
2012-07-15 05:41:43 +00:00
Warner Losh
f5dca533c2 Add preliminary support for Atmel SAM9260-EK evaluation kit.
Initially identical to the Ethernut5, but will diverge shortly before
I refactor...
2012-07-14 06:13:23 +00:00
Warner Losh
2f35297b24 uboot should be telling us it is an ETHERNUT5 for this board. Tag it
as such.
2012-07-14 06:00:37 +00:00
Warner Losh
a81c202d81 Create common routines for configuring the serial ports and use them
on all the at91rm9200 boards.
2012-07-14 05:46:52 +00:00
Warner Losh
1221371f4a For our at91rm9200 boards, register which subtype of SoC is on the
board.  We'll use this later to control the differences between these
two variants' pins.
2012-07-13 04:22:08 +00:00
Warner Losh
bc52deb7a9 This file is no longer AT91RM9200 specific, but now is generic to all
Atmel AT91 SoC's we support.  Rename to reflect that.
2012-07-12 19:15:38 +00:00
Warner Losh
1c882be4bc Remember where we found the DBGU and use that for our console. 2012-07-12 19:11:37 +00:00
Warner Losh
097047f652 Fix whitespace divot. 2012-07-12 13:54:24 +00:00
Warner Losh
a68d1f48b9 Complete the transition away from newbus to populate the children to
the linker set of CPU modules.  The newbus method, although clever,
had many flaws: it didn't really support multiple SoC, many of the
comments about order were just wrong, and it did a few things far too
late to be useful.  delay and cpu_reset now work much earlier in the
boot process.
2012-07-12 13:45:58 +00:00
Warner Losh
7f6eecf580 Create the children devices for the SoC in atmelarm bus node, not in
the identify routine of the CPU.
2012-07-12 04:23:11 +00:00
Warner Losh
0fb8b6b070 Export the interrupt status vector via soc_data. Set the interrupt
priorities in the AIC in the atmelarm driver before attaching the
children.  Delete redunant copies of the code.
2012-07-12 02:58:45 +00:00
Warner Losh
691b3c3238 Make the SoC stuff a little more modular, and start to move away from
having the CPU device that's a child of atmelarm that does stuff.

o Create a linker_set for the support fucntions for the SoCs.
o Rename soc_data to soc_info.
o Move the delay and reset function pointers to new soc_data struct
o Create elements for all known SoCs
o Add lookup of the SoC we found, and print a warning if it isn't one
  we know about.
2012-07-11 20:17:14 +00:00
Warner Losh
a83760ee77 at91pit->at91_pit for consistnecy with other drivers. 2012-07-11 17:11:54 +00:00
Warner Losh
f81522c98a at91$DEV->at91_$DEV to match other Atmel drivers. Also, export
at91_rst_cpu_reset.
2012-07-11 17:11:07 +00:00
Warner Losh
83f45363d0 Remove some more unused code. 2012-07-10 23:11:52 +00:00
Warner Losh
6e21b3a1b6 Go ahead and disable the interrupts for the DBGU the boot loader may
have left enabled after we detect the CPU, and remove the multiplely
copied code from the SoC modules.
2012-07-10 19:48:42 +00:00
Warner Losh
d67febb24f Remove a useless bit of indirection. On all Atmel ARM products, irq 1
is the system IRQ, so use the define for it and get on with life.
2012-07-10 15:02:29 +00:00
Warner Losh
72ee489703 Revert committal of local change accidentally swept up in r238329. 2012-07-10 14:21:25 +00:00
Warner Losh
58bcb2a9b4 Pure style mischief. at91_$DEV_ rather than at91$DEV_ to match
others.
2012-07-10 06:21:42 +00:00
Warner Losh
37620f94c0 Minor rework to eliminate at91rm9200reg.h dependency and possibly set the
stage for a detach routine (unlikely to be useful, but while I was here..)
2012-07-10 06:18:53 +00:00
Warner Losh
4a4c0f7c24 Revert last change. It was accidental. 2012-07-10 05:39:06 +00:00
Warner Losh
19f4a07329 Collapse all copies of at91_add_child into at91.c. They were
logically identical before today, and actually identical after today's
changes.
2012-07-10 04:17:49 +00:00
Warner Losh
86f2e4dc63 Missed one of the special AT91SAM9xxx_BASE defines. This should be
AT91_BASE.
2012-07-10 02:44:15 +00:00
Warner Losh
89e57ebbb5 The system IRQ is always IRQ 1. Make it so. 2012-07-10 02:39:03 +00:00
Warner Losh
9a5f8be0a7 Eliminate the AT91XXXX_BASE for each SoC. AT91_BASE is the right way
to spell this since we only have one AT91_BASE for all Atmel arm9 SoCs.
2012-07-10 02:14:50 +00:00
Warner Losh
378d88b3dc Remove some unused variables/externs that have been copied too many times... 2012-07-10 01:49:50 +00:00
Warner Losh
fcdf8255c5 Not quite ready for this yet, so comment it out. 2012-07-10 01:32:52 +00:00
Warner Losh
0d814a369c There's nothing AT91RM9200 specific about this file at all. 2012-07-10 01:13:00 +00:00
Warner Losh
8304b99a75 Create a generic way to support multiple boards within an
arm platform.  Add all the atmel boards to the ATMEL kernel for
testing purposes.  Until boot loader arg parsing of baord type
is done, this won't actually be able to do the runtime selection.
2012-07-07 05:02:39 +00:00
Marcel Moolenaar
252f780672 Fix LINT.
Obtained from:	Juniper Networks, Inc.
2012-07-05 15:23:45 +00:00
Warner Losh
ba1227af3f Create a pseudo-lint kernel for all at91 SoCs. This kernel will not
currently boot, but will serve as a good linting.  make universe could
now be altered to skip building all the other at91 kernels...
2012-07-01 06:56:41 +00:00
Warner Losh
bb64064e5d Opt-in rather than opt-out of the SoC. We don't really support
running with multiple SoCs compiled in very well anyway, so this just
wastes space.  As more and more SoCs arrive in the tree, it is better
to edit one master file that builds them all than many board files.
2012-07-01 06:34:17 +00:00
Marius Strobl
478f9295ef Exclude at91sam9x25 support, which just wastes space for Ethernut 5. 2012-06-30 14:48:52 +00:00
Warner Losh
c2353ed4c0 Tweak comment. 2012-06-29 06:06:19 +00:00
Warner Losh
5cb96b1dbd Add PIOD, make at91sam9x25 a standard SoC, tweak some comments. 2012-06-29 06:05:44 +00:00
Warner Losh
65b1f169a4 Ooops, replaced the at91sam9g20 interrupt list with the at91sam9x25 ones. 2012-06-29 04:49:50 +00:00
Warner Losh
007c69d506 Initital support for AT91SAM9X25 SoC and the SAM9X25-EK evaluation
board.  Much work remains.
2012-06-29 04:18:52 +00:00
Warner Losh
53edbb2cfe All xscale ports are armeb, so mark it here. This should reduce universe
times a little.
2012-06-29 04:13:31 +00:00
Andrew Turner
74dc547e24 Make the wchar_t type machine dependent.
This is required for ARM EABI. Section 7.1.1 of the Procedure Call for the
ARM Architecture (AAPCS) defines wchar_t as either an unsigned int or an
unsigned short with the former preferred.

Because of this requirement we need to move the definition of __wchar_t to
a machine dependent header. It also cleans up the macros defining the limits
of wchar_t by defining __WCHAR_MIN and __WCHAR_MAX in the same machine
dependent header then using them to define WCHAR_MIN and WCHAR_MAX
respectively.

Discussed with:	bde
2012-06-24 04:15:58 +00:00
Konstantin Belousov
aea810386d Implement mechanism to export some kernel timekeeping data to
usermode, using shared page.  The structures and functions have vdso
prefix, to indicate the intended location of the code in some future.

The versioned per-algorithm data is exported in the format of struct
vdso_timehands, which mostly repeats the content of in-kernel struct
timehands. Usermode reading of the structure can be lockless.
Compatibility export for 32bit processes on 64bit host is also
provided. Kernel also provides usermode with indication about
currently used timecounter, so that libc can fall back to syscall if
configured timecounter is unknown to usermode code.

The shared data updates are initiated both from the tc_windup(), where
a fast task is queued to do the update, and from sysctl handlers which
change timecounter. A manual override switch
kern.timecounter.fast_gettime allows to turn off the mechanism.

Only x86 architectures export the real algorithm data, and there, only
for tsc timecounter. HPET counters page could be exported as well, but
I prefer to not further glue the kernel and libc ABI there until
proper vdso-based solution is developed.

Minimal stubs neccessary for non-x86 architectures to still compile
are provided.

Discussed with:	bde
Reviewed by:	jhb
Tested by:	flo
MFC after:	1 month
2012-06-22 07:06:40 +00:00
Warner Losh
5af29dd303 Fix a stray debug that I committed accidentally years ago... 2012-06-22 06:44:22 +00:00
Konstantin Belousov
232aa31fb9 Reserve AT_TIMEKEEP auxv entry for providing usermode the pointer to
timekeeping information.

MFC after:  1 week
2012-06-22 06:38:31 +00:00
Warner Losh
2403db9a0f Move these #defines to at91reg.h (where I should have put them in the
first place).
2012-06-22 05:54:34 +00:00
Marius Strobl
e1020aef06 Revert the part of r236495 that introduced checking of SPI_SR_TXEMPTY
for TX transfer completion as for reasons unknown this occasionally
causes SPI_SR_RXBUFF and SPI_SR_ENDRX to not rise.
In any case, once the RX part of the transfer is done it's obvious
that the preceding TX part had finished and checking of SPI_SR_TXEMPTY
was introduced to rule out a possible cause for the data corruption
mentioned in r236495 but which didn't turn out to be the problem
anyway.

MFC after:	3 days
2012-06-18 20:14:42 +00:00
Marius Strobl
da20f734c0 Try to bring this file closer to style(9). 2012-06-18 19:47:25 +00:00
Marius Strobl
352a43b07f Unbreak after r236658 by comparing the right things. 2012-06-18 19:22:10 +00:00
Alan Cox
6031c68de4 The page flag PGA_WRITEABLE is set and cleared exclusively by the pmap
layer, but it is read directly by the MI VM layer.  This change introduces
pmap_page_is_write_mapped() in order to completely encapsulate all direct
access to PGA_WRITEABLE in the pmap layer.

Aesthetics aside, I am making this change because amd64 will likely begin
using an alternative method to track write mappings, and having
pmap_page_is_write_mapped() in place allows me to make such a change
without further modification to the MI VM layer.

As an added bonus, tidy up some nearby comments concerning page flags.

Reviewed by:	kib
MFC after:	6 weeks
2012-06-16 18:56:19 +00:00
Warner Losh
6212b9963b Throw this debug behind bootverbose. The information isn't all that
exciting once the initial board bring up is over.
2012-06-16 04:34:46 +00:00
Warner Losh
d94f5b01c2 Remove stray line from merge. 2012-06-15 16:50:32 +00:00
Warner Losh
b44f8e5e1e Make it possible to link together a sam and an rm kernel. The results
aren't very pretty yet, but this takes DELAY and cpu_reset and makes
them pointers.

# I worry that these are set too late in the boot, especially cpu_reset.
2012-06-15 08:37:50 +00:00
Warner Losh
d56a9edddb These options are unused, and can safely be retired. 2012-06-15 08:01:16 +00:00
Warner Losh
dc5f8dab53 This hints file doesn't actually do anything, and besides it is commented
out here.  Remove it.
2012-06-15 07:56:53 +00:00
Warner Losh
e6e7584dcd Collapse the files.at91 and files.at91sam9 back into files.at91.
Create a new option for at91rm9200 support.  Set this option in
std.at91.  Create a new option for the at91sam9 standard devices.  Set
this option in std.at91sam9.  Retire files.at91sam9.  Add options for
at91sam9x25 SoC and SAM9X25EK board, but don't connect it just yet as
the supporting files aren't quite ready.

Note: device at91rm9200 and device at91sam9 are presently mutually
exclusive.
2012-06-15 07:50:26 +00:00
Warner Losh
aa0c93a5ca Fix a global shadowing problem when LINUX_BOOT_ABI was defined. 2012-06-15 07:26:39 +00:00
Warner Losh
1591de53b1 Take half a step closer towards having a unified atmel kernel by
rearranging where we initialize the time counter and putting the
common stubs into a central place.
2012-06-15 06:38:55 +00:00
Warner Losh
56c9c68603 Fix missing straggler for the move to parse_boot_param() 2012-06-14 18:37:00 +00:00
Warner Losh
a6c5f82686 Defines for parsing linux ATAGs lists. 2012-06-14 14:38:55 +00:00
Warner Losh
3590dad094 More Linux boot support. Create arm_dump_avail_init() to initialize
this array either from Linux boot data, when enabled, or in the
typical way that most ports do it.  arm_pyhs_avail_init is coming
soon since it must be a separate function.
2012-06-14 04:18:56 +00:00
Warner Losh
38ac33aa84 Add support for parsing Linux ATAGs such as you'd see from uboot or
redboot.  Support is very preiminary and likely needs some work. Also,
do some minor code shuffling of the FreeBSD /boot/loader metadata
parsing code.  This code is preliminary and should be used with
caution.
2012-06-14 04:16:16 +00:00
Warner Losh
0bb13a26f0 Create default_parse_boot_param which, if FreeBSD /boot/loader support
is enabled, sets values based on the metadata passed in.  Otherwise
fake_preload_metadata is called.  Change the default parse_boot_param
to default_parse_boot_param.  Enable this functionality only on the mv
platform, which is where most of the code is from.

Reviewed by:	cognet, Ian Lapore
2012-06-14 04:09:20 +00:00
Warner Losh
d39655d7a4 Modify all the arm platform files to call parse_boot_param passing in
the boot parameters from initarm first thing.  parse_boot_param parses
the boot arguments and converts them to the /boot/loader metadata the
rest of the kernel uses.  parse_boot_param is a weak alias to
fake_preload_metadata, which all the platforms use now, but may become
more extensive in the future.

Since it is a weak symbol, specific boards may define their own
parse_boot_param to interface to custom boot loaders.

Reviewed by:	cognet@, Ian Lapore
2012-06-14 04:00:30 +00:00
Warner Losh
8cfede30f9 Remove leakage of other patches into last commit. 2012-06-13 16:12:30 +00:00
Fabien Thomas
790fb4edf2 Add ARM callchain support for hwpmc.
Sponsored by: NETASQ
MFC after:	3 days
2012-06-13 06:38:25 +00:00
Warner Losh
ee5cac8ab0 trim trailing whitespace 2012-06-13 05:02:51 +00:00
Warner Losh
5e92d389b2 Final whitespace trim. 2012-06-13 04:59:55 +00:00
Warner Losh
c358d6a2b0 Trim trailing whitespace... 2012-06-13 04:59:00 +00:00
Warner Losh
6a7be52dbe Strip trailing whitespace before other changes. 2012-06-13 04:52:19 +00:00
Warner Losh
c6e675f9e5 Strip trailing whitespace. 2012-06-13 04:40:29 +00:00
Warner Losh
a698b62cf5 trim trailing spaces that have accumulated over the years (these files
served as the basis for too many other platforms).
2012-06-13 04:38:09 +00:00
Andrew Turner
16072bc718 Remove an unneeded increment from initarm. The variable is uninitialised,
is not used in this part of the function and correctly initialised later
when it is used.
2012-06-10 10:40:22 +00:00
Andrew Turner
81bb9913d2 The GUMSTIX-QEMU config file is almost identical to the GUMSTIX config,
include the latter file from the former rather than duplicating it.
2012-06-10 10:37:21 +00:00
Andrew Turner
4ea15b8776 Pull out the common code to initialise proc0 & thread0 from initarm to a
common function.

Reviewed by:	imp
2012-06-10 01:13:04 +00:00
Warner Losh
c6aea9681a Remove stray break; that resulted from a last-minute, untested change. 2012-06-06 14:31:14 +00:00
Warner Losh
73a4b7a9d8 Enhance the Atmel SoC chip identification routines to account for more
SoC variants.  Fold the AT91SAM9XE chips into the AT91SAM9260
handling, where appropriate.  The following SoCs/SoC families are recognized:
	at91cap9, at91rm9200, at91sam9260, at91sam9261, at91sam9263,
	at91sam9g10, at91sam9g20, at91sam9g45, at91sam9n12, at91sam9rl,
	at91sam9x5
and the following variations are also recognized:
	at91rm9200_bga, at91rm9200_pqfp, at91sam9xe, at91sam9g45, at91sam9m10,
	at91sam9g46, at91sam9m11, at91sam9g15, at91sam9g25, at91sam9g35,
	at91sam9x25, at91sam9x35
This is only the identification routine: no additional Atmel devices
are supported at this time.

# With these changes, I'm able to boot to the point of identification
# on a few different Atmel SoCs that we don't yet support using the
# KB920X config file -- someday tht will be an ATMEL config file...
2012-06-06 06:19:52 +00:00
Warner Losh
a687c5ecc9 Remove dead code. 2012-06-05 14:19:59 +00:00
Warner Losh
537cdfaff1 Eliminate the now-unused AT91C_MASTER_CLOCK option and change the one
place in the source it was used to the more correct AT91C_MAIN_CLOCK.
Sort AT91C_MAIN_CLOCK into a better location in the options.arm file.
2012-06-04 04:24:59 +00:00
Warner Losh
4623180919 Minor rearrangement of the locore <-> initarm interface. Pass in a
structure with the first 4 registers to allow a wider range of boot
loaders to work.  Future commits will make use of this to centralize
support for the different loaders.
2012-06-03 18:34:32 +00:00
Warner Losh
5fd9ec69d6 Remove stray repeated line... 2012-06-03 05:36:25 +00:00
Marius Strobl
57974eb576 - Now that the DataFlash related drivers work properly (at91_spi(4) since
r236495 and at45d(4) since r236496), enable them by default.
- Sort BOOTP options.
2012-06-03 01:07:55 +00:00
Marius Strobl
31a2c906d7 - Prepend the device description with "AT91" to reflect its nature. [1]
- Move DMA tag and map creature to at91_spi_activate() where the other
  resource allocation also lives. [1]
- Flesh out at91_spi_deactivate(). [1]
- Work around the "Software Reset must be Written Twice" erratum.
- For now, run the bus at the slowest speed possible in order to work
  around data corruption on transit even seen with 9 MHz on ETHERNUT5
  (15 MHz maximum) and AT45DB321D (20 MHz maximum). This also serves as
  a poor man's work-around for the "NPCSx rises if no data data is to be
  transmitted" erratum of RM9200. Being able to use the appropriate bus
  speed would require:
  1) Adding a proper work-around for the RM9200 bug consisting of taking
     the chip select control away from the SPI peripheral and managing it
     directly as a GPIO line.
  2) Taking the maximum frequencies supported by the actual board and the
     slave devices into account and basing the whole thing on the master
     clock instead of hardcoding a divisor as previously done.
  3) Fixing the above mentioned data corruption.
- KASSERT that TX/RX command and data sizes match on transfers.
- Introduce a mutex ensuring that only one child device is running a SPI
  transfer at a time. [1]
- Add preliminary, #ifdef'ed out support for setting the chip select. [1]
- Use the RX instead of the TX commando size when setting up the RX side
  of a transfer.
- For controllers having SPI_SR_TXEMPTY, i.e. !RM9200, also wait for the
  completion of the TX part of transfers before stopping the whole thing
  again.
- Use DEVMETHOD_END. [1]
- Use NULL instead of 0 for pointers. [1, partially]

Additional testing by:  Ian Lepore

Submitted by:   Ian Lepore [1]
MFC after:      1 week
2012-06-03 00:54:10 +00:00
Warner Losh
b33fdab5e0 Revert debug and other immature code accidentally committed in r236372. 2012-06-01 03:00:36 +00:00
Warner Losh
b8b0747b3c Initialize the clocks before we call cninit() so that the serial
console so initialized will work upon return from cninit.  While this
is the very next line, other platforms setup all this stuff before
calling cninit.  Also, initialize the SDRAM base register in the inner
block in at91_ramsize().
2012-06-01 02:55:42 +00:00
Grzegorz Bernacki
0cdf461105 Print userspace backtrace for current thread.
Reviewed by:	imp
Obtained from:	Semihalf
2012-05-30 13:33:27 +00:00
Grzegorz Bernacki
6a07a86043 Flush D and I caches after setting a breakpoint.
Reviewed by: imp
Obtained from: Semihalf
2012-05-30 13:31:08 +00:00
Warner Losh
c414207ab0 Compute the master clock frequency, so we no longer need to have it
compiled into the kernel.  This allows us to boot the same kernel on
machines with different master clock frequencies, so long as we can
determine the main clock frequency accurately.  Cleanup the pmc clock
init function so it can be called in early boot so we can use the
serial port just after we call cninit.

# We have two calls to at91_pmc_clock_init for reasons unknown, that will
# be fixed later -- it is harmless for now.
2012-05-29 03:23:18 +00:00
Marius Strobl
577554bf92 - Correct the comments regarding the sizes of some partitions in the
DataFlash.
- Add a mapping for the Nut/OS configuration DataFlash partition according
  to the board manual (but not known to either Linux or U-Boot (patches).
2012-05-28 17:58:10 +00:00
Bjoern A. Zeeb
920b965865 MFp4 bz_ipv6_fast:
in_cksum.h required ip.h to be included for struct ip.  To be
  able to use some general checksum functions like in_addword()
  in a non-IPv4 context, limit the (also exported to user space)
  IPv4 specific functions to the times, when the ip.h header is
  present and IPVERSION is defined (to 4).

  We should consider more general checksum (updating) functions
  to also allow easier incremental checksum updates in the L3/4
  stack and firewalls, as well as ponder further requirements by
  certain NIC drivers needing slightly different pseudo values
  in offloading cases.  Thinking in terms of a better "library".

  Sponsored by:	The FreeBSD Foundation
  Sponsored by:	iXsystems

Reviewed by:	gnn (as part of the whole)
MFC After:	3 days
2012-05-24 22:00:48 +00:00
Grzegorz Bernacki
0fc0793eee Return Supervisor SP and LR registers instead of User ones while in KDB thread.
Obtained from: Semihalf
2012-05-24 12:41:57 +00:00
Grzegorz Bernacki
7377b92ebb ARMs don't have motherboards.
Obtained from:	Semihalf
2012-05-24 12:38:24 +00:00
Alexander Motin
dc0aa406db MFprojects/zfsd:
Generalize and unify ses device description.
2012-05-24 11:20:51 +00:00
Fabien Thomas
4cc50ab413 Soft PMC support for ARM.
Callgraph is not captured, only current location.

Sample system wide profiling: "pmcstat -Sclock.hard -T"
2012-05-23 13:23:40 +00:00
Warner Losh
32f648079f Be a little less magical, not that these values are likely to change... 2012-05-21 07:47:57 +00:00
Warner Losh
c69a673406 Implement pmap_mincore for arm. Now programs using it don't cause a
flood of console messages.

Reviewed by:	alc@
2012-05-21 06:56:26 +00:00
Warner Losh
e5db213663 Another minor re-arrangement of the code: calcualte the master clock
frequency in the at91_pmc_clock_init rather than passing it in.  Allow
for frequencies >= 21MHz by rounding to the nearest 500Hz (Idea from
Ian Lapore whose company uses a similar arrangement in their product).
at91_pmc_clock_init() is now nearly independent of the rest of the pmc
driver (which means we may be able to call it much earlier in boot
soon to eliminate the master clock config file requirement for printf
to work during early boot and also eliminate some interdependencies
with the device ordering which requires pmc to be the first device
added).
2012-05-21 04:24:58 +00:00
Warner Losh
c41941dfeb Minor cleanup before some more major changes:
o main_clock_hz isn't used, eliminate it
o move main clock calculation code and table so we have only one ifdef.
2012-05-20 20:50:40 +00:00
Marcel Moolenaar
db31c8e31f Unbreak LINT for ARM: DEBUG is a kernel configuration option. 2012-05-19 18:16:49 +00:00
Grzegorz Bernacki
ff3dd71982 Add localbus driver for Marvell's platforms.
Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
2012-05-18 15:25:43 +00:00
Grzegorz Bernacki
b91fab4255 Add architecture dependent code to support NAND Framework on Marvell SoCs.
Obtained from: Semihalf
Supported by:  FreeBSD Foundation, Juniper Networks
2012-05-18 14:41:14 +00:00
Marius Strobl
0a7ac239c9 Add glue/support for the SAM9XE512-based Ethernut 5 boards. Currently,
all integrated and on-board peripherals except the DataFlash (at91_spi(4)
and at45d(4) still need to be unb0rken) and NAND Flash (missing NAND
framework) are working.
AFAICT, this makes FreeBSD the first operating system besides Nut/OS
supporting Ethernut 5 out of tree.
2012-05-12 18:11:26 +00:00
Warner Losh
8a921edc20 Remove unused cruft. We call through memcpy more directly when we
need to move the kernel, so we no longer need this.
2012-05-11 17:49:00 +00:00
Warner Losh
556af95adb This comment has become unmoored from the code to which it applies.
Move it back.
2012-05-11 17:40:13 +00:00
Warner Losh
9e77ef2a9b Remove obsolte big endian flag. It is no longer needed. 2012-05-11 14:51:59 +00:00
Warner Losh
9434786e88 Hack to unbreak boot2 for at91rm9200 boot loader. When the at91sam
code came in, it moved things around which wound up breaking the
build.  We have to do this bit of a hack to avoid duplication of a lot
of #defines.
2012-05-11 14:40:25 +00:00
Warner Losh
d21686556c Generate board id's from Linux's mach-types database for all arm
ports.  This currently is a nop, but will soon be used to allow
support for multiple boards to be built into one kernel (starting with
AT91RM9200 and expanding out from there).
2012-05-10 18:06:00 +00:00
Warner Losh
6787a7875a Fix the MACHINE_ARCH for big endian arm to be armeb. 2012-05-06 07:20:48 +00:00
Warner Losh
15efbb17a8 I need to change uname -p, not uname -m, so back this out.
Also, fix a couple of style(9) issues while I'm here.

Submitted by:	nathanw, bde
2012-05-05 17:20:12 +00:00
Warner Losh
6593be0158 Big endian arm boxes need to have a uname -m of armeb, not arm, so
that the bootstrap from source works correctly.

MFC after:	4 days
2012-05-05 07:15:34 +00:00
Warner Losh
f5fbd56ca7 Fix comment about what board this is really for left over from early
cut and paste.
2012-05-02 18:41:58 +00:00
Warner Losh
b847531ac8 The PIT is really 16 bytes long (0x10) not 10 bytes long. Doesn't
matter much, since these defines are unused...

Obtained from:	AT91SAM9G20 datasheet
2012-05-02 09:19:42 +00:00
Marius Strobl
8a7eceb74a - Add missing locking in at91_usart_getc().
- Align the RX buffers on the cache line size, otherwise the requirement
  of partial cache line flushes on every are pretty much guaranteed. [1]
- Make the code setting the RX timeout match its comment (apparently,
  start and stop bits were missed in the previous calculation). [1]
- Cover the busdma operations in at91_usart_bus_{ipend,transmit}() with
  the hardware mutex, too, so these don't race against each other.
- In at91_usart_bus_ipend(), reduce duplication in the code dealing with
  TX interrupts.
- In at91_usart_bus_ipend(), turn the code dealing with RX interrupts
  into an else-if cascade in order reduce its complexity and to improve
  its run-time behavior.
- In at91_usart_bus_ipend(), add missing BUS_DMASYNC_PREREAD calls on
  the RX buffer map before handing things over to the hardware again. [1]
- In at91_usart_bus_getsig(), used a variable of sufficient width for
  storing the contents of USART_CSR.
- Use KOBJMETHOD_END.
- Remove an unused header.

Submitted by:	Ian Lepore [1]
Reviewed by:	Ian Lepore
MFC after:	1 week
2012-05-01 20:42:03 +00:00
Dimitry Andric
460378bf13 Add a convenience macro for the returns_twice attribute, and apply it to
the prototypes of the appropriate functions (getcontext, savectx,
setjmp, sigsetjmp and vfork).

MFC after:	2 weeks
2012-04-29 11:04:31 +00:00
Stanislav Sedov
fd083a492d - Disable MMU before reconfiguring the pagetables in the trampoline code.
Otherwise we might end up overwriting the PTEs we're currently using
  for some reason.

Reviewed by:	cognet
2012-04-25 22:44:07 +00:00
Marius Strobl
15eddb68ee Interrupts must be disabled while handling a partial cache line flush,
as otherwise the interrupt handling code may modify data in the non-DMA
part of the cache line while we have it stashed away in the temporary
stack buffer, then we end up restoring a stale value.

PR:		160431
Submitted by:	Ian Lepore
MFC after:	1 week
2012-04-22 00:58:04 +00:00
Marius Strobl
f7f6865e6d - Add support for MCI1 revision 2xx controllers and a work-around for their
"Data Write Operation and number of bytes" erratum.
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.
2012-04-22 00:43:32 +00:00
Andrew Turner
0b898a9ef1 Replace the C implementation of __aeabi_read_tp with an assembly version.
This ensures we follow the ABI by preserving registers r1-r3.

Reviewed by:	jmallett, imp
2012-04-16 09:38:20 +00:00
Marius Strobl
83a8745245 Generate an obviously missing STOP when having finished transmitting data.
This fixes communication with PCF8563.
2012-04-14 17:27:34 +00:00
Marius Strobl
de98dfa146 Add support for the Atmel SAM9XE familiy of microcontrollers, which
consist of a ARM926EJ-S processor core with up to 512 Kbytes of on-chip
flash. Tested with SAM9XE512.

This file was missed in r234291.
2012-04-14 17:17:55 +00:00
Marius Strobl
0f0819525b Add support for the Atmel SAM9XE familiy of microcontrollers, which
consist of a ARM926EJ-S processor core with up to 512 Kbytes of on-chip
flash. Tested with SAM9XE512.
2012-04-14 17:09:38 +00:00
Marius Strobl
bef0709e64 - Try to bring these files closer to style(9).
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.
2012-04-14 11:29:32 +00:00
Stanislav Sedov
b30d62be27 - Revert part of r234005, which I did not intend to commit.
Sorry! :(
2012-04-07 23:51:16 +00:00
Stanislav Sedov
47db1ea0bf - Add kernel config file for QEMU-emulated gumstix board. 2012-04-07 23:48:51 +00:00
Stanislav Sedov
208cf1fbc3 - Add new ARM kernel option QEMU_WORKAROUNDS which can be
used in the code which needs to implement some specific
  behaviour when being run under QEMU.
- Make PXA UART probe code to work under QEMU gumstix, which
  doesn't emulate all the ports properly.
2012-04-07 23:47:08 +00:00
Fabien Thomas
f5f9340b98 Add software PMC support.
New kernel events can be added at various location for sampling or counting.
This will for example allow easy system profiling whatever the processor is
with known tools like pmcstat(8).

Simultaneous usage of software PMC and hardware PMC is possible, for example
looking at the lock acquire failure, page fault while sampling on
instructions.

Sponsored by: NETASQ
MFC after:	1 month
2012-03-28 20:58:30 +00:00
Ed Schouten
92396a3174 Remove pty(4) from our kernel configurations.
As of FreeBSD 8, this driver should not be used. Applications that use
posix_openpt(2) and openpty(3) use the pts(4) that is built into the
kernel unconditionally. If it turns out high profile depend on the
pty(4) module anyway, I'd rather get those fixed. So please report any
issues to me.

The pty(4) module is still available as a kernel module of course, so a
simple `kldload pty' can be used to run old-style pseudo-terminals.
2012-03-21 08:38:42 +00:00
Rafal Jaworowski
fd62dcff8a Fix error check.
Submitted by:	Lukasz Plachno
Obtained from:	Semihalf
2012-03-15 21:48:27 +00:00
Attilio Rao
9c170fd168 Disable the option VFS_ALLOW_NONMPSAFE by default on all the supported
platforms.
This will make every attempt to mount a non-mpsafe filesystem to the
kernel forbidden, unless it is expressely compiled with
VFS_ALLOW_NONMPSAFE option.

This patch is part of the effort of killing non-MPSAFE filesystems
from the tree.

No MFC is expected for this patch.
2012-03-06 20:01:25 +00:00
Rafal Jaworowski
f05c7d9044 Remove unused #defines. All this is now retrieved from the device tree.
MFC after:	1 week
2012-03-04 18:13:45 +00:00
John Baldwin
831ce4cb3d - Change contigmalloc() to use the vm_paddr_t type instead of an unsigned
long for specifying a boundary constraint.
- Change bus_dma tags to use bus_addr_t instead of bus_size_t for boundary
  constraints.

These allow boundary constraints to be fully expressed for cases where
sizeof(bus_addr_t) != sizeof(bus_size_t).  Specifically, it allows a
driver to properly specify a 4GB boundary in a PAE kernel.

Note that this cannot be safely MFC'd without a lot of compat shims due
to KBI changes, so I do not intend to merge it.

Reviewed by:	scottl
2012-03-01 19:58:34 +00:00
Olivier Houchard
0d43a18d50 Make sure we do not provide the page 0 to the VM. It can't handle it properly,
because pmap_extract() returns 0 when there's no mapping.

PR:		arm/154227
MFC after:	1 week
2012-02-29 12:44:34 +00:00