History log of /freebsd-9.3-release/sys/arm/at91/
Revision Date Author Comments
267654 20-Jun-2014 gjb

Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


259753 22-Dec-2013 imp

Direct Commit of mountroot> prompt fix r259748 (since there's no sane
branching relationship between that branch and this one and since the
more general fix in head may be too risky for a stbale branch this
mature):

Fix mountroot> prompt eating most of the characters by not enabling
RXRDY interrupts in the attach routine. Instead, defer this until the
first interrupt we see after the device is opened. Given the console
use case, we're guaranteed to get a TXRDY interrupt before any reads
are posted due to boot messages, which makes this work.

The real fix is to use cngrab/cnungrab function pointers to disable
RXRDY interrupts while grabbed. However, that touches the MI uart
code, so was disallowed for 10.0 due to the lateness of the hour this
fix was proposed. It works for mountroot, the most common atmel kernel
prompt use cases, but wouldn't work for GELI since it prompts later in
the boot process.


259038 06-Dec-2013 imp

Bump the maximum VM space from 3 * memory size to a fixed
256MB. That's all we have room for since we map the hardware registers
starting at 0xd0000000. This allows my 64MB AT91SAM9G20 to boot again
after the unmmaped I/O changes were MFC'd at r251897. Other
subplatforms may need similar treatment.


237386 21-Jun-2012 marius

MFC: r235348, r236191, r236497

Add glue/support for the SAM9XE512-based Ethernut 5 boards. Currently,
all integrated and on-board peripherals except NAND Flash (missing NAND
framework/integration) are working.


237382 21-Jun-2012 marius

MFC: r237239

Revert the part of r236495 (MFC'ed to stable/9 in r237095) 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.


237095 14-Jun-2012 marius

MFC: r236495

- 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]


237093 14-Jun-2012 marius

MFC: r225882

Remove pointless semicolons after label


236472 02-Jun-2012 marius

Revert changes accidentally committed as part of r236468.


236468 02-Jun-2012 marius

MFC: r236061

- When creating the DMA tag for user data, don't ask for more segments
than required for handling MAXPHYS and report the resulting maximum
I/O size to CAM instead of implicitly limiting it to DFLTPHYS.
- Move the variables of sym_action2() out of nested scope as required
by style(9) and remove extraneous curly braces.
- Replace a magic value for PCIR_COMMAND with the appropriate macro.
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.

Tested with a HBA donated by wilko.


236088 26-May-2012 marius

MFC: r234901

- 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


236084 26-May-2012 marius

MFC: r234560

- 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.


236082 26-May-2012 marius

MFC: r234293

Generate an obviously missing STOP when having finished transmitting data.
This fixes communication with PCF8563.


236081 26-May-2012 marius

MFC: r234291, r234292

Add support for the Atmel SAM9XE family of microcontrollers, which
consist of a ARM926EJ-S processor core with up to 512 Kbytes of on-chip
flash. Tested with SAM9XE512.


236080 26-May-2012 marius

MFC: r234281

- Try to bring these files closer to style(9).
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.


225736 23-Sep-2011 kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by: re (implicit)


225214 27-Aug-2011 rwatson

Follow up to r225203 refining break-to-debugger run-time configuration
improvements:

(1) Implement new model in previously missed at91 UART driver
(2) Move BREAK_TO_DEBUGGER and ALT_BREAK_TO_DEBUGGER from opt_comconsole.h
to opt_kdb.h (spotted by np)
(3) Garbage collect now-unused opt_comconsole.h

MFC after: 3 weeks
Approved by: re (bz)


223562 26-Jun-2011 kevlo

Remove duplicate header includes


221025 25-Apr-2011 cognet

Typo fix


218913 21-Feb-2011 cognet

Get myself a brain, move the call to init_param1() before the first use in
at91_machdep.c, and do it for the files I forgot the first time

Reported by: andrew
Submitted by: pluknet


218667 13-Feb-2011 cognet

Oops, wasn't supposed to commit this.


218666 13-Feb-2011 cognet

Call init_param1() much earlier, so that msgbufsize is non-zero when we want
to map and use the msgbuf.


218387 07-Feb-2011 ticso

unbreak mutlicast hash creation for the second time.
at91_emac hardware is *not* using ether_crc32_be algorithm!


217688 21-Jan-2011 pluknet

Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.

Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe


217062 06-Jan-2011 jhb

- Use macbstart_locked() directly instead of deferring it to a task.
- Expand locking scope in interrupt handler.
- Flesh out the detach routine.

Reviewed by: cognet


217036 06-Jan-2011 imp

Remove support for SKYEYE simulator


216227 06-Dec-2010 kevlo

Fix double ;;


213896 15-Oct-2010 marius

Remove a device_printf() accidentally left in r213894.

Submitted by: jhb


213894 15-Oct-2010 marius

Converted the remainder of the NIC drivers to use the mii_attach()
introduced in r213878 instead of mii_phy_probe(). Unlike r213893 these
are only straight forward conversions though.

Reviewed by: yongari


213498 06-Oct-2010 cognet

Add support for the AT91SAM9260

Submitted by: Greg Ansley


213496 06-Oct-2010 cognet

if_ate.c:

* Support for sam9 "EMAC" controller.
* Support for rmii interface to phy.

at91.c & at91sam9.c:

* Eliminate separate at91sam9.c file.
* Add new devices to at91sam9_devs table.

at91_machdep.c & at at91sam9_machdep.c:

* Automatic chip type determination.
* Remove compile time chip dependencies.
* Eliminate separate at91sam9_machdep.c file.

at91_pmc.c:

* Corrected support for all of the sam926? and sam9g20 chips.
* Remove compile time chip dependencies.

My apologies to Greg for taking so long to take care of it.


213251 28-Sep-2010 ticso

fix outdated comment


213203 27-Sep-2010 ticso

The TWI controller automatically stops if we don't fill up with new data in
time.


213201 27-Sep-2010 ticso

fix off by one error for twi reads with len != 1.
STOP must be requested before the last byte is received.


210040 14-Jul-2010 cognet

Import preliminary support for Atmel AT91SAM9G20 cpu, and the Hot-e HL201.
This fine work was done by Yohanes Nugroho <yohanes a gmail dot com>
Many thanks to John Nicholls and Thinlinx for providing sample hardware.


207554 03-May-2010 sobomax

Add new tunable 'net.link.ifqmaxlen' to set default send interface
queue length. The default value for this parameter is 50, which is
quite low for many of today's uses and the only way to modify this
parameter right now is to edit if_var.h file. Also add read-only
sysctl with the same name, so that it's possible to retrieve the
current value.

MFC after: 1 month


204476 28-Feb-2010 ticso

simplify hash calculation


204463 28-Feb-2010 ticso

remove debug leftover


204462 28-Feb-2010 ticso

Fix multicast hashes.
Atmel uses a simple xor hash instead of the typical crc based one.


199557 19-Nov-2009 jhb

- Initialize callout before it is used in atestop() during attach.
- Reorder detach so that ether_ifdetach() is called first. This removes
the race that ATE_FLAG_DETACHING closed, so that flag can be removed.
- Trim a duplicate clearing of IFF_DRV_RUNNING.

Reviewed by: imp


199537 19-Nov-2009 jhb

These drivers only set if_timer but never set if_watchdog. Just remove
the assignments to if_timer.


198872 04-Nov-2009 alc

Eliminate an unnecessary vm include file.


196246 15-Aug-2009 stas

- Proprely intialize UART parameters at probe stage, so uart(4)
will initialize the FIFO memory correctly on attach. Before
that this values was intialized in only in at91_usart_bus_attach
which is called after the uart(4) memory allocation happens.

Approved by: re (kib)
MFC after: 1 week


195256 01-Jul-2009 raj

Map DPCPU pages into ARM kernel VA space.

DPCPU area was not properly mapped into kernel VA space, which caused page
fault on the first DPCPU access. This patch fixes the problem by mapping DPCPU
area into kernel VA space.

Submitted by: Michal Hajduk, Piotr Ziecik
Reviewed by: cognet, stas
Approved by: re (kib)
Obtained from: Semihalf


195049 26-Jun-2009 rwatson

Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/
IF_ADDR_UNLOCK() across network device drivers when accessing the
per-interface multicast address list, if_multiaddrs. This will
allow us to change the locking strategy without affecting our driver
programming interface or binary interface.

For two wireless drivers, remove unnecessary locking, since they
don't actually access the multicast address list.

Approved by: re (kib)
MFC after: 6 weeks


194784 23-Jun-2009 jeff

Implement a facility for dynamic per-cpu variables.
- Modules and kernel code alike may use DPCPU_DEFINE(),
DPCPU_GET(), DPCPU_SET(), etc. akin to the statically defined
PCPU_*. Requires only one extra instruction more than PCPU_* and is
virtually the same as __thread for builtin and much faster for shared
objects. DPCPU variables can be initialized when defined.
- Modules are supported by relocating the module's per-cpu linker set
over space reserved in the kernel. Modules may fail to load if there
is insufficient space available.
- Track space available for modules with a one-off extent allocator.
Free may block for memory to allocate space for an extent.

Reviewed by: jhb, rwatson, kan, sam, grehan, marius, marcel, stas


194015 11-Jun-2009 avg

strict kobj signatures: number of fixes for arm architecture

no functional changes should result

Reviewed by: imp, current@
Approved by: jhb (mentor)


193934 10-Jun-2009 imp

Eliminate devclass_find_free_unit call here, since -1 gives the same
net behavior.


193847 09-Jun-2009 marcel

Pass the previously returned IRQ back to arm_get_next_irq() so that
the implementation can guarantee forward progress in the event of
a stuck interrupt or interrupt storm. This is especially critical
for fast interrupt handlers, as they can cause a hard hang in that
case. When first called, arm_get_next_irq() is passed -1.

Obtained from: Juniper Networks, Inc.


192901 27-May-2009 thompsa

Delete the old USB stack. The new stack has settled in and has all the
drivers/functionality and then some.


192135 15-May-2009 imp

Fix name for driver to assign to the SPI device.


192064 13-May-2009 stas

- Set MAC address in ateinit, so it can be changed later.


192063 13-May-2009 stas

- Style(9) and consistency nitpicking.

Reviewed by: imp


192059 13-May-2009 gonzo

- Make SPI bus bridge be non-arch dependent by using more generic
name

Reviewed by: imp


192028 12-May-2009 stas

- Resurrect the debug printf message I accidentally dropped
in the previous commit.
- Use device_printf instead of printf.
- Put all printfs in the interrupt handler under bootverbose.


192027 12-May-2009 stas

- Eliminate extra register reads by using a variable to store
registers contents.
- Use memory barriers to preserve the order of buffer space operations.
This might be needed if we'll ever use this driver on architectures
where ordering is not guaranteed.


192018 12-May-2009 stas

- Implement detach path.
- Release memory and DMA resources on stop.
- Unload the associated DMA maps after transmit is complete.


191961 10-May-2009 stas

- Fix build with INVARIANTS enabled.


191960 10-May-2009 stas

- Fix multicast operation that I broke in previous commit.
- Do not enable multicast hash lookup if no multicast addresses
were configured or if promisc mode is enabled.


191959 10-May-2009 stas

- Fix promisc/multicast/broadcast parameters setting by introducing the
new ate_rxfilter function to set requested parameters. Use this function
on parameters change rather than reinitializing the chip.


191410 23-Apr-2009 stas

- Whitespace nitpicking.


191408 22-Apr-2009 stas

- Add the driver for AT91RM9200 CompactFlash controller. The driver
operates in the common memory mode and use polling mode to control
the status of operations as I don't have any board with interrupt
line routed yet. I'll add the GPIO interrupt driven mode as soon
as I get one.


190740 05-Apr-2009 thompsa

MFp4 //depot/projects/usb@159992

at91_udp.c does not exist anymore, it is now replaced by at91dci in
src/sys/dev/usb/controller. Also remove the ohci_atmelarm.c because it is also
included in src/sys/conf/files

Submitted by: Sylvestre Gallon


189126 27-Feb-2009 imp

Move to new usb stack that puts the front-end bus attachments with the
usb stack rather than with the rest of the processor support code.
Not sure that's a good idea, as we were moving away from it, but this
fixes the build in the mean time so we can have that discussion.


187606 23-Jan-2009 imp

Move to having a caps flag. Newer versions of the AT91 family don't
need the bouncing, so save a few copies in that case. Also convert
4-bit code selection to using it.


187603 22-Jan-2009 imp

Don't over-commit the DMA. Use the passed in size of the transfer
rather than a fixed 512... This fixes the mount root problem on at91.
Prior to the SD card reorg, all data transfers were 512 bytes, so we
didn't notice.


187602 22-Jan-2009 imp

Migrate towards using at91_master_clock. Initialize the clocks for
the serial port class when we set the devclass since it is now
no-longer a compile time constant. Eliminate the pci include, as it
isn't relevant or necessary.


187601 22-Jan-2009 imp

Use at91_master_clock instead of AT91C_MASTER_CLOCK.


187600 22-Jan-2009 imp

Remove now-redundant declaration.


187599 22-Jan-2009 imp

Store at91_master_clock in a global variable as opposed to a compile
time constant. This allows us to potentially change it at runtime or
autodetect it early in the boot (the latter being much more likely to
have a good outcome).


187548 21-Jan-2009 imp

o The f_max is really at91_master_clock / 2, not 30MHz, so compute it as such.
o Only set 4-bit caps on those boards that have 4-bit caps (this means that
because we don't set wire4 yet, this forces us to always use 1-bit bus).
o Don't test wire4 when setting up the bus width, since bad things will
happen if we do.

# This likely won't fix the busted at91 sd card support, but these are
# needful changes for correctness.


187476 20-Jan-2009 mav

Implement MMCBR_IVAR_CAPS. It should better be implemented, or results
can be unpredictable.

PR: arm/128987


185539 02-Dec-2008 peter

Delete a bunch of empty mergeinfo records caused by local copies.


185513 01-Dec-2008 stas

- Fix spelling error in comments.

PR: arm/128891
Submitted by: Pavel Pankov <pankov_p@mail.ru>
Approved by: kib (mentor)


185492 30-Nov-2008 stas

- Get rid of extra include file, erroneously added by the
previous commit. This include file was required by the
first version of the patch.

Approved by: kib (mentor, implicit)


185491 30-Nov-2008 stas

- Obtain main clock frequency dynamically based on CKGR_MCFR register
contents.
- It is possible to override the dynamic configuration by using
AT91C_MAIN_CLOCK option in kernel config.

PR: arm/128961 (based on)
Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de>
Reviewed by: imp
Approved by: kib (mentor, implicit)


185477 30-Nov-2008 imp

opt_at91.h isn't needed here at all anymore, since the board init
routines have been split out. Remove it. This leaves only one
instance of it in the tree that will be going away soon.


185307 25-Nov-2008 imp

Convert BWCT and HL200 over to new board mechanism as well. The
TSC4370 config file wasn't committed to this tree, so I don't know if
my changes will work on it or not.


185305 25-Nov-2008 imp

Start to make it easier to add AT91RM9200 based boards:
o Copy kb920x_machdep.c to at91_machdep.c
o Move board_init to new board_kb920x.c
o rename ramsize to at91_ramsize and make it accessible to board_* files.
o Delete files.kb920x. We can do this selection with the new boards.
o Add a stub for the tsc4370 board init, which will be added in
a future commit.
o Add new 'devices' at91_board_kb920x and at91_board_tsc4370. More are
needed and will be added in future commits.

Reviewed by: stass, cognet


185300 25-Nov-2008 imp

Whitespace nit.


185288 25-Nov-2008 imp

Save boot args.


185287 25-Nov-2008 imp

more silly whitespace changes.


185270 25-Nov-2008 imp

Fix various whitespace botches, mostly having them at the end of a line.


185267 25-Nov-2008 imp

Replace disclaimer with the one from COPYRIGHT. Joint authors aggreed
to the change.


185266 25-Nov-2008 imp

Replace three magic constants with L1_S_SIZE, since that's what is
really meant in those places.


185265 25-Nov-2008 imp

Tweak the disclaimer section of the license to match COPYRIGHT, for
better or worse. Ok'd by folks that have additional copyrights to the
files in cases where there's joint authorship.


185049 18-Nov-2008 stas

- Fix two minor errors in at91 code.

PR: arm/128959
Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de>
Approved by: kib (mentor)


184452 29-Oct-2008 mav

Allow card reader bridge driver to report maximum supported transfer size.
sdhci supports up to 65535 blocks transfers, at91_mci - one block.

Enable multiblock operations disabled before to follow at91_mci driver
limitations.

Reviewed by: imp@


184310 26-Oct-2008 stas

- Add stream bus_space operations.

Reviewed by: cognet
Approved by: kib (mentor, implicit)
MFC after: 1 week


184309 26-Oct-2008 stas

- Add a missing NULL-pointer check.

Reviewed by: cognet
Approved by: kib (mentor, implicit)
MFC after: 3 days


183670 07-Oct-2008 imp

Use bus_get_dma_tag() instead of NULL here. Not really needed for atmel
at the moment, but it is more correct.


183479 30-Sep-2008 imp

Properly implement read only. Also, the caps implementation is wrong
here, so I'm backing it out.


183451 28-Sep-2008 imp

Implement MMCBR_IVAR_CAPS for AT91 MCI device.

Submitted by: mav@ (well, not this one, but the base impl was)


182807 05-Sep-2008 imp

Turn some lame pseudo-code into a less lame comment.


182806 05-Sep-2008 imp

Kill bogus #if 0'd stuff for interrupts. They don't happen, and this
driver will need more serious help to work with an interrupt driven
path. There's many subtleties in driving the DMA engine with
interrupts in many configurations. Best to not "guess" what the right
way would be and mislead people.


182805 05-Sep-2008 imp

Kill vestiges of the special case code we once had in place for usb
memory allocation. It was change to include the range in the normal
memory area, so these ifdef'd out special cases are no longer useful
to keep around.


182803 05-Sep-2008 imp

Kill bogus #if 1. There's no need for it since usb works these days.


182555 31-Aug-2008 imp

Use a locally assigned address rather than stealing Atmel's which
might cause a conflict...


182524 31-Aug-2008 stas

- Fix comment.
- Set U/L bit of generated ethernet address to 1 to not
clash with Atmel assigned addresses.

Suggested by: yar
Approved by: kib (mentor)


182477 30-Aug-2008 stas

- Try to look for MAC address in all SA registers, not only in the
first one. U-boot, for example, uses the second register to store
MAC.[1]
- Use random MAC address if none configured instead of failing.

Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de> [1]
Reviewed by: imp
Approved by: kib (mentor)
MFC after: 1 week


182476 30-Aug-2008 stas

- Style fix.

Approved by: kib (mentor)
MFC after: 1 week


181884 19-Aug-2008 imp

Provide hooks into the GPIO lines and the ability to set/clear
interrupts from them. This should be more generalized, but is
sufficient for now.

Submitted by: Hans Petter Selasky


181883 19-Aug-2008 imp

Use the proper clock domain for the usb host controller.

Submitted by: Hans Petter Selasky


181882 19-Aug-2008 imp

Add IRQ line for usb device. I'm not 100% sure this is the right
place to add this connection, since the interrupt is for a GPIO pin,
but since we have no alternative at the moment...

Submitted by: Hans Petter Selasky


181303 04-Aug-2008 jhb

Add locking to the various iicbus(4) bridge drivers:
- Just grab Giant in the ixp425_iic(4) driver since this driver uses
a shared address/data register window pair to access the actual
I2C registers. None of the other ixp425 drivers lock access to these
shared address/data registers yet and that would need to be done before
this could use any meaningful locking.
- Add locking to the interrupt handler and 'iicbus_reset' methods of the
at91_twi(4) driver.
- Add locking to the pcf(4) driver. Other pcf(4) fixes include:
- Don't needlessly zero the softc.
- Use bus_foo rather than bus_space_foo and remove bus space tag and
handle from softc.
- The lpbb(4) driver just grabs Giant for now. This will be refined later
when ppbus(4) is locked.
- As was done with smbus earlier, move the DRIVER_MODULE() lines to match
the bus driver (either iicbus or iicbb) to the bridge driver into the
bridge drivers.

Tested by: sam (arm/ixp425)


181158 02-Aug-2008 ed

Make the at91 uart(4) driver compile again.

As of r178766 this driver didn't compile anymore, because it missed a
switch()-statement. I'm getting tired of seeing this driver being broken
for two months already. When I run `make universe', everything passes,
except the BWCT kernel configuration file.


180693 22-Jul-2008 stas

- Whitespace fixes.

Approved by: gonzo
MFC after: 1 week


180486 12-Jul-2008 ticso

fix multicast hash register definition


179693 09-Jun-2008 wkoszek

Since we create a DMA tag "mtag" for TX map with bus_dmamap_create(),
we must synchronize such a map against "mtag" with bus_dmamap_sync(),
not the tag designated for RX map.

Fix it.

Approved by: cognet


179375 28-May-2008 imp

Release the resources for the registers for the TWI device with
SYS_RES_MEMORY to match how we allocate them...

Noticed by: Ian Lepore


178766 04-May-2008 peter

Expand kdb_alt_break a little, most commonly used with the option
ALT_BREAK_TO_DEBUGGER. In addition to "Enter ~ ctrl-B" (to enter the
debugger), there is now "Enter ~ ctrl-P" (force panic) and
"Enter ~ ctrl-R" (request clean reboot, ala ctrl-alt-del on syscons).

We've used variations of this at work. The force panic sequence is
best used with KDB_UNATTENDED for when you just want it to dump and
get on with it.

The reboot request is a safer way of getting into single user than
a power cycle. eg: you've hosed the ability to log in (pam, rtld, etc).
It gives init the reboot signal, which causes an orderly reboot.

I've taken my best guess at what the !x86 and non-sio code changes
should be.

This also makes sio release its spinlock before calling KDB/DDB.


178366 20-Apr-2008 cognet

On the AT91, we need to write on the EOI register after we handle an
interrupt. So, add a new function pointer, arm_post_filter, which defaults
to NULL, and which will be used as the post_filter arg for
intr_event_create(). Set it properly for the AT91, so that it boots again.

Reported by: hps


177883 03-Apr-2008 imp

Take the first baby step towards unifying and cleaning up arminit():
- Pull all the code to deal with the trampoline stuff into one
centeralized place and use it from everywhere.
- Some minor style tidiness

Reviewed by: tinguely


177873 03-Apr-2008 imp

Remove unnecessary #define.


175120 07-Jan-2008 cognet

Add a missing \n.


174898 25-Dec-2007 rwatson

Add a new 'why' argument to kdb_enter(), and a set of constants to use
for that argument. This will allow DDB to detect the broad category of
reason why the debugger has been entered, which it can use for the
purposes of deciding which DDB script to run.

Assign approximate why values to all current consumers of the
kdb_enter() interface.


174880 23-Dec-2007 stas

- Fix a typo in comments.

MFC after: 1 week
Approved by: cognet


174781 19-Dec-2007 imp

Actually program the interrupt controller for priorities. As we
support more AT91 platforms, we'll need to move this into some
platform init routine.


174700 17-Dec-2007 kevlo

Use M_NOWAIT instead of M_WAITOK to cause malloc() to return NULL

Reviewed by: imp


174661 16-Dec-2007 stas

- Don't return 0xffff if PHY id isn't equal 0. This allows PHYs with
non-zero addresses to be used.

Approved by: cognet
MFC after: 2 weeks


173361 05-Nov-2007 kib

Fix for the panic("vm_thread_new: kstack allocation failed") and
silent NULL pointer dereference in the i386 and sparc64 pmap_pinit()
when the kmem_alloc_nofault() failed to allocate address space. Both
functions now return error instead of panicing or dereferencing NULL.

As consequence, vmspace_exec() and vmspace_unshare() returns the errno
int. struct vmspace arg was added to vm_forkproc() to avoid dealing
with failed allocation when most of the fork1() job is already done.

The kernel stack for the thread is now set up in the thread_alloc(),
that itself may return NULL. Also, allocation of the first process
thread is performed in the fork1() to properly deal with stack
allocation failure. proc_linkup() is separated into proc_linkup()
called from fork1(), and proc_linkup0(), that is used to set up the
kernel process (was known as swapper).

In collaboration with: Peter Holm
Reviewed by: jhb


173155 29-Oct-2007 imp

kill commented out line of code.


172993 25-Oct-2007 cognet

Add an option to be able to override the value of the AT91 master clock
frequency. It'd be better to be able to calculate it at runtime, but we need
the information very early, to setup the uart.


172992 25-Oct-2007 cognet

Move some KB920x-specific options into the KB920x file.


172989 25-Oct-2007 cognet

Oooops, get the end of the memory right.


172945 24-Oct-2007 cognet

KERNBASE should really be KERNVIRTADDR there too.

MFC after: 1 week


172944 24-Oct-2007 cognet

In ate_get_mac(), try to get the mac address in the right order, at least
in the same order as it's set in ate_set_mac.
I remember a discussion about this on -arm, but apparently nothing was done.
Warner, is this wrong ?

X-MFC After: proper review


172943 24-Oct-2007 cognet

Handle the case where PHYSADDR != KERNPHYSADDR (ie we do not load the kernel
at the beginning of the RAM).

MFC After: 1 week


172942 24-Oct-2007 cognet

Correct a comment, this was not true anymore.


172739 18-Oct-2007 imp

correct guard variable names.


172196 16-Sep-2007 imp

Kill bogus printf debugs.

Approved by: re@ (blanket)


172195 16-Sep-2007 imp

Kill overly verbose messages about setting bus width.

Approved by: re@ (blanket)


171673 31-Jul-2007 imp

Make USB work on the KB9202{,A,B} boards. This has been in p4 for about
7 months. You must have JP6 in the 1-2 position to supply power to the
USB devices, but I've used uftdi, uplcom and umass successfully. If you
have it in 2-3, then nothing will show up. Also, if you have the FQPA
packaging for the AT91RM9200 (like the KN9202 boards have), you will get
the following message

uhub0: device problem (IOERROR), disabling port 2

due to a hardware erratum. It is safe to ignore as it is about pins that
aren't brought out on the FQPA package and aren't proeprly terminated either.
Alas, there's no register to read to tell the FQPA from the BGA versions.

Submitted by: Daan Vreeken
Approved by: re (kensmith)


170574 11-Jun-2007 imp

Fix a spacing nit.


170286 04-Jun-2007 marcel

Revert to the previous version where the return value of uart_getenv()
is being ignored. It's optional and the lack of environment variable
is not an error condition.


169900 23-May-2007 cognet

Remove duplicate includes.

Submitted by: Cyril Nguyen Huu <cyril ci0 org>


168281 02-Apr-2007 marcel

Don't expose the uart_ops structure directly, but instead have
it obtained through the uart_class structure. This allows us
to declare the uart_class structure as weak and as such allows
us to reference it even when it's not compiled-in.
It also allows is to get the uart_ops structure by name, which
makes it possible to implement the dt tag handling in uart_getenv().
The side-effect of all this is that we're using the uart_class
structure more consistently which means that we now also have
access to the size of the bus space block needed by the hardware
when we map the bus space, eliminating any hardcoding.


167950 27-Mar-2007 n_hibma

Revisit the watchdogs: Resetting the error to EINVAL after failing to set the
watchdog might hide the succesful arming of an earlier one. Accept that on
failing to arm any watchdog (because of non-supported timeouts) EOPNOTSUPP is
returned instead of the more appropriate EINVAL.

MFC after: 3 days


167935 27-Mar-2007 kevlo

Don't map mini-data cache page since ARM920T doesn't have it.


167852 23-Mar-2007 imp

MFp4: A bunch of patches from myself and Tisco to improve the
robustness of IIC transactions when parts aren't present. This also
removes a bunch of debug. This also moves this driver to 7-1
addressing rather than 6-0 addressing, which is more inline with all
the other iic drivers in the tree. I've tested this for about a
million years on the systems at work.


167261 06-Mar-2007 piso

o substitute INTR_FAST with FILTER in a panic message.
o wrap a BUS_SETUP_INTR() line at 80.


167135 01-Mar-2007 piso

Update bus_setup_intr().

Pointed by: Krassimir Slavchev


167082 27-Feb-2007 jhb

Use tsleep() rather than msleep() with a NULL mtx.


167069 27-Feb-2007 piso

Correct return code (int) for at91_rtc_intr() prototype.

Approved by: cognet


166974 25-Feb-2007 piso

Fix attach of at91_pio() after bus_setup_intr() modification.

Reported and tested by: Krassimir Slavchev


166901 23-Feb-2007 piso

o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Reviewed by: many
Approved by: re@


166625 10-Feb-2007 mlaier

Fix small altq related copy and paste error.


166573 08-Feb-2007 imp

Add sanity check to make sure that the MAC address isn't all 0's. Bad
boot loaders can do this, and this leads to all kinds of ill effects
downstream. Also, minor formatting nits.


166532 06-Feb-2007 imp

at91_twi depends on the iicbus module to satisfy its symbols when
loaded, so make that explicit. Works for the monolithic kernel case,
won't work for the kldload case.


166454 03-Feb-2007 kevlo

ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again.

Approved by: imp, cognet


166100 18-Jan-2007 marius

- Add a uart_rxready() and corresponding device-specific implementations
that can be used to check whether receive data is ready, i.e. whether
the subsequent call of uart_poll() should return a char, and unlike
uart_poll() doesn't actually receive data.
- Remove the device-specific implementations of uart_poll() and implement
uart_poll() in terms of uart_getc() and the newly added uart_rxready()
in order to minimize code duplication.
- In sunkbd(4) take advantage of uart_rxready() and use it to implement
the polled mode part of sunkbd_check() so we don't need to buffer a
potentially read char in the softc.
- Fix some mis-indentation in sunkbd_read_char().

Discussed with: marcel


165787 05-Jan-2007 ticso

MFp4: Use the next possible value for hz instead of defaulting to 128
Update tick value after modifying hz.


165783 05-Jan-2007 ticso

MFp4: Make at91_rtc optional to allow other RTC choices


165781 05-Jan-2007 ticso

MFp4: Read access require PDC to be setup first otherwise we might get
overrun errors.
Write access however need cmd first, so keep the existing order
for them.


165780 05-Jan-2007 ticso

MFp4: BWCT boards are using an 16MHz xtal


165779 05-Jan-2007 ticso

MFp4: Add VLAN_MTU support


165778 05-Jan-2007 ticso

MFp4: fix a race in transmit buffer handling


165713 01-Jan-2007 imp

MFp4: Fix bit name for SPI SR register


165712 01-Jan-2007 imp

MFp4: Remove watchdog timeout that appears to be unused.


165711 01-Jan-2007 imp

Merge from FreeBSD-tsf-6 by way of p4:
correct values for PIO registers

submitted by: patrick schweiger


165260 15-Dec-2006 n_hibma

Align the interfaces for the various watchdogs and make the interface
behave as expected.

Also:
- Return an error if WD_PASSIVE is passed in to the ioctl as only
WD_ACTIVE is implemented at the moment. See sys/watchdog.h for an
explanation of the difference between WD_ACTIVE and WD_PASSIVE.
- Remove the I_HAVE_TOTALLY_LOST_MY_SENSE_OF_HUMOR define. If you've
lost your sense of humor, than don't add a define.

Specific changes:

i80321_wdog.c
Don't roll your own passive watchdog tickle as this would defeat the
purpose of an active (userland) watchdog tickle.

ichwd.c / ipmi.c:
WD_ACTIVE means active patting of the watchdog by a userland process,
not whether the watchdog is active. See sys/watchdog.h.

kern_clock.c:
(software watchdog) Remove a check for WD_ACTIVE as this does not make
sense here. This reverts r1.181.


164969 07-Dec-2006 cognet

Unbreak build for Skyeye: do not attempt to do any DMA, as Skyeye doesn't
emulate it.

Reported by: ru


164936 06-Dec-2006 julian

Threading cleanup.. part 2 of several.

Make part of John Birrell's KSE patch permanent..
Specifically, remove:
Any reference of the ksegrp structure. This feature was
never fully utilised and made things overly complicated.
All code in the scheduler that tried to make threaded programs
fair to unthreaded programs. Libpthread processes will already
do this to some extent and libthr processes already disable it.

Also:
Since this makes such a big change to the scheduler(s), take the opportunity
to rename some structures and elements that had to be moved anyhow.
This makes the code a lot more readable.

The ULE scheduler compiles again but I have no idea if it works.

The 4bsd scheduler still reqires a little cleaning and some functions that now do
ALMOST nothing will go away, but I thought I'd do that as a separate commit.

Tested by David Xu, and Dan Eischen using libthr and libpthread.


164745 29-Nov-2006 imp

MFp4:
formatting nit


164744 29-Nov-2006 imp

Make this work a lot better:
Remove a lot of older cruft not needed.
Improve ISR support, but it is still unused since polling is faster
Properly initalize the speed register to get 90kb/s, not 400b/s.
Try to catch NACK
Allow 0 length read transfers to generate start/top pairs.


164741 29-Nov-2006 imp

MFp4:
correct data counts so that we clock enough data for the spi
transaction. This allows complete spi transactions to happen.


164503 22-Nov-2006 imp

MFp4: Make it work :-)
o Don't delay when checking the done bits. There's no gain other
than a small performance hit.
o calculate the clock divisors better (things are still way slow,
so maybe there's more here?)
o don't always fail reset. Always succeed instead.
o fix inverted logic around at91_twi_wait() return value
o remove debug code
o remove unneeded, unworking junk


164432 20-Nov-2006 imp

MFp4: Tweak descriptions in preparation for porting to other members of
the AT91 arm9 family.


164425 19-Nov-2006 sam

change bus space unmap protoype

Reviewed by: cognet, imp
MFC After: 1 month


164198 11-Nov-2006 alc

Eliminate unused global variables.


163937 03-Nov-2006 imp

MFp4:
o Fix the packet statistics
o Make sure we set the FD bit when in full duplex
o Improve TX side efficency by eliminating a data copy for
unfragmented mbufs (the hardware can't do s/g).
o Minor busdma pedantry
o better comments in some places, more XXX in others
o Minor style nits.

This solves a problem I was seeing where I'd get no ethernet when not
booting with a NFS root. Well, unless I unplugged the cable and
plugged it back in first so I'd get the same up down up messages I get
for NFS root...

Thanks to sam and scottl for suggestions on making this driver more
efficient through better use of approrpiate APIs.


163709 26-Oct-2006 jb

Make KSE a kernel option, turned on by default in all GENERIC
kernel configs except sun4v (which doesn't process signals properly
with KSE).

Reviewed by: davidxu@


163681 25-Oct-2006 imp

MFp4: Move the parameters that are basically dictated by the AT91
organization to that file.


163680 25-Oct-2006 imp

MFp4: Status register bits


163526 20-Oct-2006 imp

MFp4: Working SPI driver.


163525 20-Oct-2006 imp

Commit WIP SSC driver, more work is needed here, but it configures
things OK.


163524 20-Oct-2006 imp

More register definitions.


163523 20-Oct-2006 imp

Progress commit for getting TWI working


163522 20-Oct-2006 imp

Add sysctl to export current state of rmii vs mii configuraiton.
Fix a typo in resource allocation.


163521 20-Oct-2006 imp

Add configuration of the SSC lines for second SSC.


163517 20-Oct-2006 imp

MMC/SD bridge driver (host adapter) for AT91RM9200's MCI interface.
This interface also appears in the AT91SAM9260 and '61 as well as the
AVR32 based micros from Atmel. We don't yet support write protect or
hot-swap in this bridge driver.


162130 07-Sep-2006 imp

MFp4: first cut at getting I2C transfers working (generically). I'm
unsure if this driver correctly implements all the start/stop junk
right (but it did or didn't before I made this commit).


162129 07-Sep-2006 imp

MFp4: berndt pointed me at an errata that shows that the stat register
offsets were originally documented incorrectly. This fixes that. It
shouldn't affect anything other than error stat reporting.


161704 28-Aug-2006 cognet

Relocate the vector page for AT91, to work around bugs with the LOW_VECTOR
code.


161617 25-Aug-2006 cognet

Do not create dma maps with bus_dmamap_create, as we call
bus_dmamem_alloc later which will overwrite the value, leading to a small
memory leak.


161138 09-Aug-2006 imp

Hook into the watchdog device, if present. Also, turn off the
watchdog timer stuff when we boot because the boot blocks are turning
it on...


161105 08-Aug-2006 cognet

Rewrite ARM_USE_SMALL_ALLOC so that instead of the current behavior, it maps
whole the physical memory, cached, using 1MB section mappings. This reduces
the address space available for user processes a bit, but given the amount of
memory a typical arm machine has, it is not (yet) a big issue.
It then provides a uma_small_alloc() that works as it does for architectures
which have a direct mapping.


161063 08-Aug-2006 kevlo

Remove a bogus i = 0.
Approved by: cognet


160683 25-Jul-2006 cognet

Use virtual_avail instead of freemempos as the starting point of the available
physical memory, as the vm uses the memory between freemempos and
virtual_avail.

MFC After: 3 days


160533 20-Jul-2006 cognet

Fix ALT_BREAK_TO_DEBUGGER on the AT91 :
The core uart code expects the receive method to actually puts the
characters read into its buffers. For AT91, it's done in the ipend routine,
so also check if we have the alternate break sequence here.

MFC after: 3 days


160455 17-Jul-2006 cognet

If we can't defrag a packet, re-queue it instead of dropping it.


160453 17-Jul-2006 cognet

#if => #ifdef


160374 15-Jul-2006 cognet

Add a comment explaining why the OHCI mapping has been commented out.


160369 14-Jul-2006 imp

MFp4: this now depends on new spi bus stuff


160368 14-Jul-2006 imp

MFp4: tweaks


160366 14-Jul-2006 imp

MFp4: elevate quality of slow clock a little


160365 14-Jul-2006 imp

MFp4: paren police


160363 14-Jul-2006 imp

MFp4:
Introduce framework to configure the multiplexed pins on boot.

Since the USART supprots RS-485 multidrop mode, it allows the
TX pins to float. However, for RS-232 operations, we don't
want these pins to float. Instead, they should be pulled up
to avoid mismatches. Linux does something similar when it
configures the TX lines. This implies that we also allow the
RX lines to float rather than be in the state they are left in
by the boot loader. Since they are input pins, I think that
this is the right thing to do.

Plus minor for our board.


160362 14-Jul-2006 imp

MFp4:
Fix typo in RTC_CALR_MK.


160361 14-Jul-2006 imp

The TSC board uses a 16MHz base clock for the AT91RM9200, while the Kwikbyte
board uses a 10MHz base clock. Cope with this difference.


160359 14-Jul-2006 imp

Implement the set_time function. Rather pointless with this RTC, as it
resets when the core resets, but there may be some use for it...


160358 14-Jul-2006 imp

MF p4:

Adapt to forthcoming spi framework. The ioctls for SPI commands and such
belong in the higher level driver.


160357 14-Jul-2006 imp

Be sure to flush the cache after a partial read on timeout. Expand
comments about timeouts. Fix a style nit. Sometimes small messages
were getting corrupted.


160348 14-Jul-2006 imp

Move some of the common parameters into the std. files for this platform.
Also migrate from MD disk to NFS boot.


160282 12-Jul-2006 cognet

Comment out the mapping of the OHCI controller registers va == pa. This
address is in the userland address space. The proper thing is either to choose
a virtual address in the kernel address space beyond the KVA, or to use
pmap_mapdev().


160072 02-Jul-2006 imp

Add support for configuring pins to be one of {GPIO, PERIPHERAL A or
PERIPHERAL B}, as well as direction of GPIO pin. Add defines for all
the pins.


160071 02-Jul-2006 imp

MFp4:

Make serial ports more robust and reliable. Make non-console ports
work. This might have broken skyeye stuff.

o Introduce ping-pong receive buffers.
o Use DMA to copy characters directly into memory.
o Support baud rates other than 115200
o Use 1 stop bit when 1 stop bit is requested (otherwise 2 were used,
which caused dropped characters when received in bursts).
o Use 1.5 stop bits for 5-bit bytes, and 2 stop bits otherwise when 2
stop bits were requested.
o Actually update line parameters.
o Fix comments
o Move init into attach
o Tweaks to TX interrupt registers to get them reliable and non-storming.
o harvest data in ipend since the latency between it and the callback
was too long. This likely is how it should be, I don't know why I deferred
things to the callback before.
o disable all interrupts in console init. We don't want interrupts until
we turn on an ISR.
o cosmetic tweaks
o Automatically detect of the TIMEOUT interrupt is supported. If so, use
it so we get better CPU utilization. Otherwise do a character at a time
RX. Good news here is that it seems we have enough CPU and low enough
fast interrupt latency to do this reliably.
o Don't read USART_CR. It is a write-only register.
o start to implement bus_ioctl. Do BAUD now...


159902 23-Jun-2006 cognet

Backout previous commit, Warner committed at91_pio.c...


159899 23-Jun-2006 cognet

Comment out at91_pio.c, it's not in CVS.


159814 20-Jun-2006 imp

Compute physmem so we can print it correctly on boot.
Slightly optimize while I'm here.


159795 20-Jun-2006 imp

Probe the memory size of the board better. Look at the bus width,
number of banks, rows and columns the SDRAMC is programmed to access
to determine the RAM size for the board, rather than hard-wiring it to
be 32MB. My company's board with 64MB now probes correctly, as does
the KB9202 with only 32MB. This means that to detect the right memory
size, our boot loader must correctly initialize these values. This is
a fairly safe assumption because the boot loader has to initialize
SDRAM already, and it isn't really possible to change this register
after we've accessed SDRAM.


159708 17-Jun-2006 imp

Carefully note the RMII bit in the config register at attach time.
The boot loader is supposed to leave this bit set to the right value
for the board. If this bit was set at attach time, use it to init the
config register correctly.

Note: this means the boot loader has to properly initialize it.


159707 17-Jun-2006 imp

improve reporting of clocks


159556 12-Jun-2006 cognet

MFp4: Increase the L1 pagetable needed for the kernel from 8 to 22, to be
able to boot fat kernels.


159365 07-Jun-2006 imp

Remove sa1_cache_clean_addr. It isn't needed.

Submitted by: kevlo


158746 19-May-2006 cognet

We have an implementation of generic_bs_rr_1, so use it, as some drivers use
it.

Submitted by: kevlo


158531 13-May-2006 cognet

Resurrect Skyeye support :
Add a new option, SKYEYE_WORKAROUNDS, which as the name suggests adds
workarounds for things skyeye doesn't simulate. Specifically :
- Use USART0 instead of DBGU as the console, make it not use DMA, and manually provoke an interrupt when we're done in the transmit function.
- Skyeye maintains an internal counter for clock, but apparently there's
no way to access it, so hack the timecounter code to return a value which
is increased at every clock interrupts. This is gross, but I didn't find a
better way to implement timecounters without hacking Skyeye to get the
counter value.
- Force the write-back of PTEs once we're done writing them, even if they
are supposed to be write-through. I don't know why I have to do that.


158432 11-May-2006 cognet

Get this to compile :
- The prototype of uart_bus_probe() hasn't been changed in cvs yet, so use the
old one.
- Add at91_pdcreg.h, needed by uart_dev_at91usart.c.


157891 20-Apr-2006 imp

When returning a resource that we've allocated with rman_reserve_resource,
go ahead and set the rid for that resource.


157570 06-Apr-2006 cognet

MFp4: Catchup with recent UART changes.


157564 06-Apr-2006 imp

Add debug writes in error cases that, in theory, should never happen


157563 06-Apr-2006 imp

Connect twi to the FreeBSD iicbus infrastructure.


157562 06-Apr-2006 imp

Pull in numerous fixes from myself and cognet. With these fixes the
KB9202 eval board is finally stable with a nfs root.


157561 06-Apr-2006 imp

Remove unused bit definitions.
Minor style cleanup while I'm here.


157560 06-Apr-2006 imp

Optimize the TX side of the part by using the PDC to move bytes out to
the wire. This increases the speed considerably. Start to put
infrastructure in place to do RX side, but that requires more study
before it can be done.


157091 24-Mar-2006 imp

Skeleton support for the SSC device, which implements I2S interfaces,
amoung others.


157089 24-Mar-2006 imp

Skeleton PIO support.


157088 24-Mar-2006 imp

Add the sekelton of support for the Power Management Controller.


157087 24-Mar-2006 imp

Add rtc to files.at91


157086 24-Mar-2006 imp

Add RTC support. This may be of dubious value since the RTC is reset
to 1998 every reboot.


157029 22-Mar-2006 cognet

MFp4: Don't force single-user now we can go multi-user.
Call cninit() only after the pagetable has been set, as locore.S won't
map the system device for us anymore.


157024 22-Mar-2006 cognet

MFp4: teach the KB920x bits how to know where the ELF trampoline puts the
strtab and the symtab.


157023 22-Mar-2006 cognet

MFp4: Handle break interrupts (it seems to only work for USART, not DBGU).


156833 18-Mar-2006 imp

MFp4:

Add bus attachment for the ohci device on this chip. The bus and hub
are detected correctly, but the children devices aren't detected
correctly for reasons unknown.


156832 18-Mar-2006 imp

Add ohci controller mapping.


156831 18-Mar-2006 imp

MFp4:

o update TODO list
o Better use of busdma
o mark RX dtors as COHERENT. This helps performance a lot by not requiring
so many EXPENSIVE cache flushes. The cost of accessing it non-cached
is much smaller.
o Copy data from Rx buffers to make IP header 4 byte aligned.
o CRC length included in reported length, so cope
o Don't free TX buffer twice
o Manage TX buffers better.
o Enable just the interrupts we want.
o Manage OACTIVE better

# Some of these done by cognet
# These changes let us get to # via NFS root.


156830 18-Mar-2006 imp

MFP4:
Gratuitously sort alphabetically.


156829 18-Mar-2006 imp

MFP4:

GC and fix definitions.

# some of this may have been done by cognet


156828 18-Mar-2006 imp

MFp4:

o Add memory barrier to bus space
o Allow for up to 3 IRQs per device
o Move to table driven population of children devices.
o Add support for usb ohci memory mapped controller resource allocation.
o Clean up a bunch of extra writes to disable interrupts that are now
done elsewhere.
o Force all system interrupt handlers be fast. We get deadlock if they
aren't.


156827 18-Mar-2006 imp

MFp4:

o Disable all interrupts that the ST can generate until we have an ISR
to service them.
o Correct clock calculation to make DELAY the right length...

Submitted by: cognet (#2)


156094 27-Feb-2006 cognet

Get this to compile with the recent UART changes.


155793 17-Feb-2006 imp

These files apply to all the atmel parts that freebsd is going to run on,
so name them more generically. If we do support the MMU-less ARM7 parts,
then we'll need to, at that time, expand the files we have.


155791 17-Feb-2006 imp

This file was obsolete when committed. Catchup and delete it.


155527 11-Feb-2006 imp

Use the correct address for the ohci device.


155445 07-Feb-2006 cognet

Set the MAC address after we just read it at attach time, as it seems needed.


155443 07-Feb-2006 cognet

Set m_pkthdr.len and m_pkthdr.rcvif.


155405 06-Feb-2006 cognet

- Call mii_phy_probe() after we allocated an ifp. mii has this evil
hack where it assumes the first field of the driver softc is the struct
ifnet, and it copies its value in mii_phy_probe().
- In the interrupt handler, set the mbuf m_len field on packet receive.


155324 04-Feb-2006 imp

Import support for the Atmel AT91RM9200 CPU/Microcontroller. This SoC
is a ARM920T based CPU with a bunch of built-in peripherals. The
inital import supports the SPI bus, the TWI bus (although iicbus
integration is not complete), the uarts, the system timer and the
onboard ethernet. Support for the Kwikbyte KB9202
(http://www.kwikbyte.com) board is also included, although there's no
reason why the 9200 and the 9201 wouldn't also work. Primitive
support for running under the skyeye emulator is also provided
(although skyeye's support for the AT91RM9200 is a little weak).

The code has been structured so that other members of Atmel's arm family can
be supported in the future. The AT91SAM9260 is not presently supported
due to lack of hardware. The arm7tdmi families are also not supported
becasue they lack an MMU.

Many thanks to cognet@ for his help and assistance in bringing up this
board. He did much of the vm work and wrote parts of the uart and
system timer code as well as the bus space implementation.

The system boots to single user w/o problem, although the serial
console is a little slow and the ethernet driver is still in flux.

This work was sponsored by Timing Solutions, Corporation. I am
grateful to their support of the FreeBSD project in this manner.