Commit Graph

348 Commits

Author SHA1 Message Date
thompsa
14ea3ee2bb Delete the old USB stack. The new stack has settled in and has all the
drivers/functionality and then some.
2009-05-27 16:16:56 +00:00
imp
51a3dd3d05 Fix name for driver to assign to the SPI device. 2009-05-15 04:49:20 +00:00
stas
6432689ead - Set MAC address in ateinit, so it can be changed later. 2009-05-13 21:01:10 +00:00
stas
5f97b44dec - Style(9) and consistency nitpicking.
Reviewed by:	imp
2009-05-13 20:29:53 +00:00
gonzo
d1ac4eea21 - Make SPI bus bridge be non-arch dependent by using more generic
name

Reviewed by:	imp
2009-05-13 18:42:49 +00:00
stas
9a3d2fc774 - 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.
2009-05-12 21:28:41 +00:00
stas
85e0be6354 - 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.
2009-05-12 21:14:36 +00:00
stas
071f91a282 - Implement detach path.
- Release memory and DMA resources on stop.
- Unload the associated DMA maps after transmit is complete.
2009-05-12 16:07:08 +00:00
stas
7ae497268d - Fix build with INVARIANTS enabled. 2009-05-10 11:05:22 +00:00
stas
2e068e57c0 - 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.
2009-05-10 10:32:29 +00:00
stas
d69c3902d5 - 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.
2009-05-10 08:54:10 +00:00
stas
33a498785c - Whitespace nitpicking. 2009-04-23 00:00:57 +00:00
stas
7daf5e0713 - 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.
2009-04-22 23:54:41 +00:00
thompsa
36beed3172 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
2009-04-05 18:21:40 +00:00
imp
4d511e5cfe 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.
2009-02-27 23:12:28 +00:00
imp
8220172455 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.
2009-01-23 00:51:25 +00:00
imp
73288922b2 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.
2009-01-22 22:29:21 +00:00
imp
f8e69e3986 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.
2009-01-22 21:56:41 +00:00
imp
94037e905a Use at91_master_clock instead of AT91C_MASTER_CLOCK. 2009-01-22 21:55:37 +00:00
imp
57d525aa7f Remove now-redundant declaration. 2009-01-22 21:55:04 +00:00
imp
e68dc65ae1 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).
2009-01-22 21:54:26 +00:00
imp
43f8f3168f 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.
2009-01-21 17:39:11 +00:00
mav
e6593c6ded Implement MMCBR_IVAR_CAPS. It should better be implemented, or results
can be unpredictable.

PR:		arm/128987
2009-01-20 17:36:58 +00:00
stas
eb23814aee - Fix spelling error in comments.
PR:		arm/128891
Submitted by:	Pavel Pankov <pankov_p@mail.ru>
Approved by:	kib (mentor)
2008-12-01 10:16:25 +00:00
stas
42801e6297 - 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)
2008-11-30 22:40:11 +00:00
stas
610e0aa6be - 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)
2008-11-30 22:33:03 +00:00
imp
819e9e52a4 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.
2008-11-30 17:40:05 +00:00
imp
e8a7024ad9 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.
2008-11-25 19:05:46 +00:00
imp
f7eb998871 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
2008-11-25 18:40:40 +00:00
imp
a655f3a86f Whitespace nit. 2008-11-25 16:38:10 +00:00
imp
910037c59a Save boot args. 2008-11-25 05:17:39 +00:00
imp
11f1051cdc more silly whitespace changes. 2008-11-25 05:12:19 +00:00
imp
0672f1dcf9 Fix various whitespace botches, mostly having them at the end of a line. 2008-11-25 00:48:15 +00:00
imp
d0ea5829d3 Replace disclaimer with the one from COPYRIGHT. Joint authors aggreed
to the change.
2008-11-25 00:14:49 +00:00
imp
3dfcd1739a Replace three magic constants with L1_S_SIZE, since that's what is
really meant in those places.
2008-11-25 00:14:14 +00:00
imp
798ce0024e 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.
2008-11-25 00:13:26 +00:00
stas
ca9ebe8c73 - Fix two minor errors in at91 code.
PR:		arm/128959
Submitted by:	Bjorn Konig <bkoenig@alpha-tierchen.de>
Approved by:	kib (mentor)
2008-11-18 12:42:59 +00:00
mav
3c4dfce5ca 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@
2008-10-29 20:01:26 +00:00
stas
57432d8a84 - Add stream bus_space operations.
Reviewed by:	cognet
Approved by:	kib (mentor, implicit)
MFC after:	1 week
2008-10-26 22:53:59 +00:00
stas
e29a55524b - Add a missing NULL-pointer check.
Reviewed by:	cognet
Approved by:	kib (mentor, implicit)
MFC after:	3 days
2008-10-26 22:52:57 +00:00
imp
e2a8a485a0 Use bus_get_dma_tag() instead of NULL here. Not really needed for atmel
at the moment, but it is more correct.
2008-10-07 17:23:16 +00:00
imp
5a8e6d3572 Properly implement read only. Also, the caps implementation is wrong
here, so I'm backing it out.
2008-09-30 02:32:41 +00:00
imp
3808bd172d Implement MMCBR_IVAR_CAPS for AT91 MCI device.
Submitted by:	mav@ (well, not this one, but the base impl was)
2008-09-28 23:37:56 +00:00
imp
894695e105 Turn some lame pseudo-code into a less lame comment. 2008-09-05 22:30:59 +00:00
imp
1ab0349341 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.
2008-09-05 22:29:50 +00:00
imp
4f189f7cd1 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.
2008-09-05 22:27:10 +00:00
imp
db9f13905a Kill bogus #if 1. There's no need for it since usb works these days. 2008-09-05 22:23:41 +00:00
imp
937ceba27f Use a locally assigned address rather than stealing Atmel's which
might cause a conflict...
2008-08-31 18:20:01 +00:00
stas
1ab8b1ad33 - 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)
2008-08-31 09:28:49 +00:00
stas
70f2b88d5c - 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
2008-08-30 15:16:40 +00:00
stas
67d0d81443 - Style fix.
Approved by:	kib (mentor)
MFC after:	1 week
2008-08-30 15:04:53 +00:00
imp
22fd66a829 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
2008-08-19 22:17:14 +00:00
imp
22fa49d382 Use the proper clock domain for the usb host controller.
Submitted by:	Hans Petter Selasky
2008-08-19 22:16:10 +00:00
imp
51f75784d6 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
2008-08-19 22:15:14 +00:00
jhb
9b394a3293 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)
2008-08-04 20:46:15 +00:00
ed
274fe7a6fc 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.
2008-08-02 08:01:56 +00:00
stas
442ea27fed - Whitespace fixes.
Approved by:	gonzo
MFC after:	1 week
2008-07-22 14:04:06 +00:00
ticso
c72cf0954d fix multicast hash register definition 2008-07-12 23:40:07 +00:00
wkoszek
5a286929e4 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
2008-06-09 21:51:48 +00:00
imp
511de48450 Release the resources for the registers for the TWI device with
SYS_RES_MEMORY to match how we allocate them...

Noticed by: Ian Lepore
2008-05-28 14:35:15 +00:00
peter
5a3c5f632b 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.
2008-05-04 23:29:38 +00:00
cognet
19c46f4f03 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
2008-04-20 23:29:06 +00:00
imp
13cdc14d99 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
2008-04-03 16:44:50 +00:00
imp
01156d94e4 Remove unnecessary #define. 2008-04-03 06:07:45 +00:00
cognet
24d883c398 Add a missing \n. 2008-01-07 00:36:09 +00:00
rwatson
bdee30611d 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.
2007-12-25 17:52:02 +00:00
stas
cf2788b769 - Fix a typo in comments.
MFC after:	1 week
Approved by:	cognet
2007-12-23 23:31:27 +00:00
imp
93ea7f3594 Actually program the interrupt controller for priorities. As we
support more AT91 platforms, we'll need to move this into some
platform init routine.
2007-12-19 17:34:17 +00:00
kevlo
f3f1d0b3a5 Use M_NOWAIT instead of M_WAITOK to cause malloc() to return NULL
Reviewed by: imp
2007-12-17 05:08:54 +00:00
stas
10ac9b50a2 - 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
2007-12-16 12:57:12 +00:00
kib
9ae733819b 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
2007-11-05 11:36:16 +00:00
imp
b1a850ab26 kill commented out line of code. 2007-10-29 21:01:50 +00:00
cognet
bf5c2ef02d 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.
2007-10-25 23:02:42 +00:00
cognet
5ddc0ba134 Move some KB920x-specific options into the KB920x file. 2007-10-25 22:57:19 +00:00
cognet
638dd6acb3 Oooops, get the end of the memory right. 2007-10-25 22:43:17 +00:00
cognet
721d638714 KERNBASE should really be KERNVIRTADDR there too.
MFC after:	1 week
2007-10-24 23:41:46 +00:00
cognet
bdb3b0ffe4 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
2007-10-24 23:12:19 +00:00
cognet
bd28207484 Handle the case where PHYSADDR != KERNPHYSADDR (ie we do not load the kernel
at the beginning of the RAM).

MFC After:	1 week
2007-10-24 22:26:54 +00:00
cognet
b1ea6b3ec3 Correct a comment, this was not true anymore. 2007-10-24 22:24:32 +00:00
imp
31191feb7a correct guard variable names. 2007-10-18 05:43:44 +00:00
imp
cf6bc93f9b Kill bogus printf debugs.
Approved by: re@ (blanket)
2007-09-16 07:51:02 +00:00
imp
3bac12ad89 Kill overly verbose messages about setting bus width.
Approved by: re@ (blanket)
2007-09-16 07:48:58 +00:00
imp
4d0d4dac14 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)
2007-07-31 17:43:18 +00:00
imp
eed16ca559 Fix a spacing nit. 2007-06-11 19:36:37 +00:00
marcel
c118c8a64b 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.
2007-06-04 17:53:42 +00:00
cognet
8e2721e190 Remove duplicate includes.
Submitted by:   Cyril Nguyen Huu <cyril ci0 org>
2007-05-23 13:21:57 +00:00
marcel
f30daf4b49 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.
2007-04-02 22:00:22 +00:00
n_hibma
2e4f7510d9 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
2007-03-27 21:03:37 +00:00
kevlo
c93478d4b1 Don't map mini-data cache page since ARM920T doesn't have it. 2007-03-27 06:29:19 +00:00
imp
9e26c86850 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.
2007-03-23 22:57:24 +00:00
piso
d2f53dd40d o substitute INTR_FAST with FILTER in a panic message.
o wrap a BUS_SETUP_INTR() line at 80.
2007-03-06 10:55:57 +00:00
piso
4ead5c57e5 Update bus_setup_intr().
Pointed by: Krassimir Slavchev
2007-03-01 09:10:55 +00:00
jhb
e946f637f6 Use tsleep() rather than msleep() with a NULL mtx. 2007-02-27 17:15:39 +00:00
piso
c0f6ce7abf Correct return code (int) for at91_rtc_intr() prototype.
Approved by: cognet
2007-02-27 13:39:34 +00:00
piso
27f8ccc0d6 Fix attach of at91_pio() after bus_setup_intr() modification.
Reported and tested by: Krassimir Slavchev
2007-02-25 14:34:59 +00:00
piso
6a2ffa86e5 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@
2007-02-23 12:19:07 +00:00
mlaier
6d577fa554 Fix small altq related copy and paste error. 2007-02-10 15:43:58 +00:00
imp
3ae687fcd5 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.
2007-02-08 21:42:10 +00:00
imp
f82b2337b9 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.
2007-02-06 12:07:14 +00:00
kevlo
ed33e9dab8 ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again.
Approved by: imp, cognet
2007-02-03 07:46:26 +00:00
marius
545a381d5f - 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
2007-01-18 22:01:19 +00:00
ticso
9f4ed86194 MFp4: Use the next possible value for hz instead of defaulting to 128
Update tick value after modifying hz.
2007-01-05 02:52:06 +00:00
ticso
616c9e84da MFp4: Make at91_rtc optional to allow other RTC choices 2007-01-05 02:06:53 +00:00
ticso
9b171d8fea 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.
2007-01-05 01:18:32 +00:00
ticso
2cad965a32 MFp4: BWCT boards are using an 16MHz xtal 2007-01-05 01:14:14 +00:00
ticso
e065c8604c MFp4: Add VLAN_MTU support 2007-01-05 01:07:59 +00:00
ticso
84de78b5ca MFp4: fix a race in transmit buffer handling 2007-01-05 01:01:14 +00:00
imp
4f5a74c4f1 MFp4: Fix bit name for SPI SR register 2007-01-01 00:50:25 +00:00
imp
67ee3dc1bd MFp4: Remove watchdog timeout that appears to be unused. 2007-01-01 00:48:25 +00:00
imp
7367e09394 Merge from FreeBSD-tsf-6 by way of p4:
correct values for PIO registers

	submitted by: patrick schweiger
2007-01-01 00:46:54 +00:00
n_hibma
c98f016084 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.
2006-12-15 21:44:49 +00:00
cognet
ae543684d0 Unbreak build for Skyeye: do not attempt to do any DMA, as Skyeye doesn't
emulate it.

Reported by:	ru
2006-12-07 00:24:15 +00:00
julian
396ed947f6 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.
2006-12-06 06:34:57 +00:00
imp
a4a3a2c4c4 MFp4:
formatting nit
2006-11-29 08:17:40 +00:00
imp
befbd3a3bb 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.
2006-11-29 08:15:59 +00:00
imp
85a0be372b MFp4:
correct data counts so that we clock enough data for the spi
	transaction.  This allows complete spi transactions to happen.
2006-11-29 07:57:02 +00:00
imp
ceddc20728 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
2006-11-22 06:51:59 +00:00
imp
5df82d7e99 MFp4: Tweak descriptions in preparation for porting to other members of
the AT91 arm9 family.
2006-11-20 06:27:15 +00:00
sam
023ec0dcbf change bus space unmap protoype
Reviewed by:	cognet, imp
MFC After:	1 month
2006-11-19 23:47:51 +00:00
alc
760248140c Eliminate unused global variables. 2006-11-11 20:57:52 +00:00
imp
bac59c3a27 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.
2006-11-03 07:39:37 +00:00
jb
f82c799735 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@
2006-10-26 21:42:22 +00:00
imp
d7da10161e MFp4: Move the parameters that are basically dictated by the AT91
organization to that file.
2006-10-25 08:00:11 +00:00
imp
d7e5c47a91 MFp4: Status register bits 2006-10-25 07:58:18 +00:00
imp
c24d0dcbc6 MFp4: Working SPI driver. 2006-10-20 07:10:13 +00:00
imp
105dd71b16 Commit WIP SSC driver, more work is needed here, but it configures
things OK.
2006-10-20 07:08:59 +00:00
imp
dbcd7809d1 More register definitions. 2006-10-20 07:08:15 +00:00
imp
22d781c5e8 Progress commit for getting TWI working 2006-10-20 07:06:39 +00:00
imp
e08539a4c7 Add sysctl to export current state of rmii vs mii configuraiton.
Fix a typo in resource allocation.
2006-10-20 07:04:56 +00:00
imp
4084c0b8bc Add configuration of the SSC lines for second SSC. 2006-10-20 07:03:57 +00:00
imp
3434ef1d27 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.
2006-10-20 06:44:04 +00:00
imp
6af2f13b58 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).
2006-09-07 21:53:28 +00:00
imp
423b53ad2f 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.
2006-09-07 21:50:01 +00:00
cognet
fa893a6f9c Relocate the vector page for AT91, to work around bugs with the LOW_VECTOR
code.
2006-08-28 20:05:00 +00:00
cognet
3748f87bf1 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.
2006-08-25 13:38:42 +00:00
imp
8d1199edcd 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...
2006-08-09 20:58:55 +00:00
cognet
2d628bb4d9 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.
2006-08-08 20:59:38 +00:00
kevlo
ae60705942 Remove a bogus i = 0.
Approved by: cognet
2006-08-08 01:18:18 +00:00
cognet
405961b2ae 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
2006-07-25 23:07:35 +00:00
cognet
83a16c4049 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
2006-07-20 21:03:43 +00:00
cognet
34956b2cd0 If we can't defrag a packet, re-queue it instead of dropping it. 2006-07-17 21:36:08 +00:00
cognet
68d3bbc684 #if => #ifdef 2006-07-17 21:20:00 +00:00
cognet
1d520bd714 Add a comment explaining why the OHCI mapping has been commented out. 2006-07-15 00:09:53 +00:00
imp
29ab994ef0 MFp4: this now depends on new spi bus stuff 2006-07-14 22:41:54 +00:00
imp
a3607b2b33 MFp4: tweaks 2006-07-14 22:40:24 +00:00
imp
60a615aa4e MFp4: elevate quality of slow clock a little 2006-07-14 22:31:12 +00:00
imp
a96b0fc43f MFp4: paren police 2006-07-14 22:30:44 +00:00
imp
1248744935 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.
2006-07-14 22:22:57 +00:00
imp
de4939a282 MFp4:
Fix typo in RTC_CALR_MK.
2006-07-14 22:06:01 +00:00
imp
05cb2db736 The TSC board uses a 16MHz base clock for the AT91RM9200, while the Kwikbyte
board uses a 10MHz base clock.  Cope with this difference.
2006-07-14 22:01:51 +00:00
imp
3b9505ced7 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...
2006-07-14 21:37:19 +00:00
imp
d9d2d73de5 MF p4:
Adapt to forthcoming spi framework.  The ioctls for SPI commands and such
belong in the higher level driver.
2006-07-14 21:35:59 +00:00
imp
6dccb75673 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.
2006-07-14 21:33:04 +00:00
imp
e5fffb8574 Move some of the common parameters into the std. files for this platform.
Also migrate from MD disk to NFS boot.
2006-07-14 15:20:31 +00:00
cognet
45301dddff 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().
2006-07-12 00:48:50 +00:00
imp
d1b6a98346 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.
2006-07-02 03:50:44 +00:00
imp
7a60ad8bb4 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...
2006-07-02 03:45:33 +00:00
cognet
5688b2b9fa Backout previous commit, Warner committed at91_pio.c... 2006-06-23 23:07:11 +00:00
cognet
109db2df6d Comment out at91_pio.c, it's not in CVS. 2006-06-23 22:30:55 +00:00
imp
7ac9e2a5c2 Compute physmem so we can print it correctly on boot.
Slightly optimize while I'm here.
2006-06-20 23:40:04 +00:00
imp
da7a558f2e 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.
2006-06-20 20:13:40 +00:00
imp
efe72c3bf7 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.
2006-06-17 23:24:35 +00:00
imp
c2756c87a0 improve reporting of clocks 2006-06-17 23:22:10 +00:00
cognet
e928591f2a MFp4: Increase the L1 pagetable needed for the kernel from 8 to 22, to be
able to boot fat kernels.
2006-06-12 22:57:24 +00:00
imp
21150f79c2 Remove sa1_cache_clean_addr. It isn't needed.
Submitted by: kevlo
2006-06-07 05:36:10 +00:00
cognet
e748a32ffa We have an implementation of generic_bs_rr_1, so use it, as some drivers use
it.

Submitted by:	kevlo
2006-05-19 11:27:02 +00:00
cognet
2e58b61962 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.
2006-05-13 23:41:16 +00:00
cognet
a100106c75 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.
2006-05-11 14:30:28 +00:00
imp
09e17e600a When returning a resource that we've allocated with rman_reserve_resource,
go ahead and set the rid for that resource.
2006-04-20 04:12:02 +00:00
cognet
8b8bb58f45 MFp4: Catchup with recent UART changes. 2006-04-06 20:47:54 +00:00
imp
8694646e12 Add debug writes in error cases that, in theory, should never happen 2006-04-06 04:32:29 +00:00
imp
000b33975f Connect twi to the FreeBSD iicbus infrastructure. 2006-04-06 04:31:19 +00:00
imp
b8ec0fd91c Pull in numerous fixes from myself and cognet. With these fixes the
KB9202 eval board is finally stable with a nfs root.
2006-04-06 04:30:23 +00:00
imp
9a23a843f0 Remove unused bit definitions.
Minor style cleanup while I'm here.
2006-04-06 04:29:24 +00:00
imp
41d4c17769 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.
2006-04-06 04:27:19 +00:00
imp
3bdb3321e5 Skeleton support for the SSC device, which implements I2S interfaces,
amoung others.
2006-03-24 07:42:33 +00:00
imp
177c00bf75 Skeleton PIO support. 2006-03-24 07:39:29 +00:00
imp
378a37c96c Add the sekelton of support for the Power Management Controller. 2006-03-24 07:37:56 +00:00
imp
0fcb126eba Add rtc to files.at91 2006-03-24 07:36:23 +00:00
imp
2d026c4a78 Add RTC support. This may be of dubious value since the RTC is reset
to 1998 every reboot.
2006-03-24 07:35:30 +00:00
cognet
311d69f620 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.
2006-03-22 22:31:31 +00:00
cognet
b9a98eab6a MFp4: teach the KB920x bits how to know where the ELF trampoline puts the
strtab and the symtab.
2006-03-22 21:16:51 +00:00
cognet
1e8aa65571 MFp4: Handle break interrupts (it seems to only work for USART, not DBGU). 2006-03-22 21:16:09 +00:00
imp
ebdf4c5109 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.
2006-03-18 01:45:29 +00:00
imp
a98bdc0813 Add ohci controller mapping. 2006-03-18 01:43:54 +00:00
imp
e1042394e7 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.
2006-03-18 01:43:25 +00:00
imp
efec5051c9 MFP4:
Gratuitously sort alphabetically.
2006-03-18 01:39:23 +00:00
imp
89937ade66 MFP4:
GC and fix definitions.

# some of this may have been done by cognet
2006-03-18 01:38:25 +00:00
imp
ed8d5d3e0b 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.
2006-03-18 01:35:49 +00:00
imp
4470c64621 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)
2006-03-18 01:30:31 +00:00
cognet
ce247bd774 Get this to compile with the recent UART changes. 2006-02-27 23:19:13 +00:00
imp
da6aba0374 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.
2006-02-17 22:33:13 +00:00
imp
a2ac42b55a This file was obsolete when committed. Catchup and delete it. 2006-02-17 22:23:36 +00:00
imp
e106ce1e06 Use the correct address for the ohci device. 2006-02-11 03:58:07 +00:00
cognet
f63c104013 Set the MAC address after we just read it at attach time, as it seems needed. 2006-02-07 21:31:13 +00:00
cognet
c7f3a565d2 Set m_pkthdr.len and m_pkthdr.rcvif. 2006-02-07 20:48:52 +00:00
cognet
35615ccad6 - 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.
2006-02-06 22:17:42 +00:00
imp
f2384c93e3 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.
2006-02-04 23:32:13 +00:00