Commit Graph

88 Commits

Author SHA1 Message Date
briggs
458f8dc093 Restore .Lpmc_intr_return -- ben only removed one of two references to it. 2002-10-25 14:29:37 +00:00
bjh21
2a89b96077 Pull down rev 1.7.2.1 [must be careful which branch I commit to!]:
Reinstate .Lextirq_return: it was used in two places, and I only removed one
of them.
2002-10-21 18:09:18 +00:00
bsh
5e33e792f7 Support Intel PXA250 and PXA210 application processors. 2002-10-19 19:31:38 +00:00
bjh21
d599df9587 Continue the " - . - 8" purge. Specifically:
add	rd, pc, #foo - . - 8		->	adr	rd, foo
ldr	rd, [pc, #foo - . - 8]		->	ldr	rd, foo

Also, when saving the return address for a function pointer call, use
"mov lr, pc" just before the call unless the return address is somewhere
other than just after the call site.

Finally, a few obvious little micro-optimisations like using LDR directly
rather than ADR followed by LDR, and loading directly into PC rather than
bouncing via R0.
2002-10-14 22:32:50 +00:00
thorpej
855eefa351 Clean up some bad interaction between the spl inlining stuff and
strict-prototypes.
2002-10-09 00:03:42 +00:00
thorpej
a4e06dd042 Move XScale common prototypes to xscalevar.h. Add xscale_pmc_dispatch()
prototype.  Include xscalevar.h has necessary to being prototypes into
scope.
2002-10-08 23:59:41 +00:00
thorpej
072eedb728 Add a symbolic constant for where external interrupts start. 2002-10-03 20:10:40 +00:00
thorpej
c5e91d447d Use CFATTACH_DECL(). 2002-10-02 04:55:47 +00:00
thorpej
9a711d6985 Declare all cfattach structures const. 2002-09-27 20:29:02 +00:00
provos
0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
thorpej
d1ad2ac4f2 Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver.  The cfdriver is then looked
up in a list which is built at run-time.
2002-09-27 02:24:06 +00:00
briggs
37019d791a Use generic_bs_sr_4 for bus_space_set_region_4. 2002-08-29 17:29:34 +00:00
thorpej
a7d44c2503 Use separate function pointers for dmamap_sync pre- vs post- operations.
Change the bus_dmamap_sync() macro to test the ops argument against pre-
and post- constants.  The compiler will optimize out dead code because
of the constants.  Since post- operations are not needed on ARM (except
for ISA bounce buffers), this eliminate a large number of function calls
which are noops, each of which cost at least 6 cycles just in the call
and return overhead (not to mention whatever other useless work the
compiler decides to do in the callee).
2002-08-17 20:46:26 +00:00
briggs
126f6cf9bc Add a new option EVBARM_BOARDTYPE to differentiate between different
evbarm ports.  Inline _splraise/_spllower/splx for i80321 and iq80310
for more performance.
2002-08-17 16:42:20 +00:00
thorpej
7cbd25232f Use correct-for-ELF local labels. 2002-08-17 03:14:47 +00:00
briggs
b84fadb38b i80200_extirq_dispatch takes a struct irqframe * now. 2002-08-16 04:55:48 +00:00
thorpej
4706ae8670 Use cpsr_c rather then cpsr_all where appropriate. 2002-08-14 23:33:11 +00:00
thorpej
eeebe88acf Don't need to frob CPSR in _splraise(). 2002-08-14 19:47:18 +00:00
thorpej
0291ab61ec * PMC_TYPE_I80200 -> PMC_CLASS_I80200 to reflect the terminology
used in pmc(3).
* Some minor namespace cleanup.
2002-08-09 05:27:09 +00:00
briggs
5da3a2950b When configuring a counter, do not assume that it's not been configured in
this process (mask off the register field before setting it).
2002-08-08 18:23:46 +00:00
thorpej
f91adb85ce * XSCALE_PMC_TYPE_I80200 -> PMC_TYPE_I80200
* XSCALE_PMC_TYPE_CCNT -> PMC_TYPE_I80200_CCNT
* XSCALE_PMC_TYPE_PMCx -> PMC_TYPE_I80200_PMCx

Per discussion with Allen Briggs.
2002-08-07 21:11:35 +00:00
briggs
0b956d0b8b Implement pmc(9) -- An interface to hardware performance monitoring
counters.  These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface.  Initially, the Intel XScale
counters are the only ones supported.
2002-08-07 05:14:47 +00:00
thorpej
0aa15bdf33 Add support for "xor5", "xor6", "xor7", and "xor8". 2002-08-04 02:26:18 +00:00
thorpej
3b50c1710c * Define the 8-input, 16-input, and 32-input descriptors.
* Adjust descriptor sync'ing to work with the additional descriptor
  formats.
2002-08-03 21:58:55 +00:00
thorpej
a39c3378b6 Restructure the iopaau_function slightly to provide greater
flexibility when using different descriptor formats.
2002-08-03 21:31:16 +00:00
thorpej
c070073d8e Add support for xor2, xor3, and xor4. Fix inverted direction
indications in some bus_dma operations.
2002-08-02 06:52:16 +00:00
thorpej
58983a92ba Let the "zero" and "fill8" functions share a bunch of code. 2002-08-02 02:08:11 +00:00
thorpej
321a514c93 Grr, RCS ID tag typo. 2002-08-02 00:36:38 +00:00
thorpej
036da55e8f Add support for the Intel i80321 I/O Processor's Application Accelerator
Unit.  The AAU provides block fill, block copy, XOR, and XOR-parity-check
operations.  We currently provide dmover(9) functions for "zero", "fill8",
and "copy".

Much of this code can be shared with the i80312 Companion I/O AAU, and
will be when support for the older chip is implemented.
2002-08-02 00:35:47 +00:00
thorpej
d038c91c0c Delete all the AAU register definitions; they are moved to a separate
file in a future commit.
2002-08-02 00:33:29 +00:00
thorpej
e3e6d7dfa5 Move the DMA tag initialization functions into i80312.c. 2002-08-01 19:55:02 +00:00
thorpej
f546baba66 Move the DMA tag initialization functions into i80321.c. 2002-08-01 19:40:07 +00:00
thorpej
dce4476374 Overhaul how DMA ranges work in the ARM bus_dma implementation.
A new "arm32_dma_range" structure now describes a DMA window, with
a system address base, bus address base, and length.  In addition to
providing info about which memory regions are legal for DMA, the new
structure provides address translation support, as well.

As before, if a tag does not list any ranges, then all addresses are
considered valid, and no DMA address translation is performed.

This allows us to remove a large chunk of code which was duplicated and
tweaked slightly (to do the address translation) from the stock ARM
bus_dma in the XScale IOP and ARM Integrator ports.

Test compiled on all ARM platforms, test booted on Intel IQ80321 and Shark.
2002-07-31 17:34:23 +00:00
thorpej
5fed6739d9 Use more descriptive interrupt names. 2002-07-30 04:45:41 +00:00
thorpej
d8eb148780 Clean up some comments. 2002-07-29 22:00:00 +00:00
thorpej
2bbd3be11a Add support for the i80321 watchdog timer. 2002-07-29 18:40:04 +00:00
thorpej
2367c7fff8 Add support for attaching IOP built-in sub-devices (aau, dma, ssp,
watchdog, etc.)
2002-07-29 17:37:14 +00:00
thorpej
c92ad565ad * Remove some AAU definitions -- they will be defined elsewhere in
a future commit.
* Fix a typo in the watchdog enable names.
* Add SSP (synchronous serial port, for SPI, Microwire, etc.) definitions.
2002-07-29 17:28:06 +00:00
thorpej
7b652cb939 Change the way that DMA map syncs are done. Instead of remembering
the virtual address for each DMA segment, just cache a pointer to the
original buffer/buftype used to load the DMA map, and use that.  This
lets us shrink the bus_dma_segment_t down from 12 bytes to 8, and the
cache flushing is also more efficient.

Tested on an i80321 -- changes to others are mechanical.
2002-07-28 17:54:05 +00:00
thorpej
efe71a8aac Add support for DMA to/from the on-chip devices of the i80321 (no
PCI window translation).

XXX This would be better done by overhauling the shared ARM bus_dma code.
2002-07-25 15:00:48 +00:00
thorpej
7704072be3 Correct a comment. 2002-06-25 19:41:08 +00:00
thorpej
fea38885e8 * Interrupt status is in cp13.4, not cp13.1 (D'oh!)
* Fix an inverted test.
2002-06-25 19:40:46 +00:00
thorpej
f2bff71e47 Interrupt steering register is cp13.8, not cp13.2 (D'oh!). 2002-06-25 19:39:51 +00:00
thorpej
204183c0fa * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses.  For busses behind a bridge, it points to
  a persistent copy of the bridge's pcitag_t.  This can be very useful
  for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
  uses OFW device nodes to enumerate the bus.  When a PCI bus that is
  behind a bridge is attached, pci_attach_hook() allocates a new PCI
  chipset tag for the new bus and sets it's "curnode" to the OFW node
  of the bridge.  This is used as a starting point when enumerating
  that bus.  Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
2002-05-16 01:01:28 +00:00
thorpej
efb8222642 Fix error reporting in the bus_dmamap_load_mbuf() routines. 2002-05-02 16:50:39 +00:00
thorpej
f23ba7637c Add Application Accelerator Unit registers. 2002-04-16 17:36:06 +00:00
thorpej
bbdbd9ab37 Add i80321 DMA controller registers. 2002-04-16 04:50:14 +00:00
thorpej
80146a5185 Use the bus_space_generic bus space ops. 2002-04-12 19:02:30 +00:00
thorpej
70fbd8fba7 Fix soft interrupts. 2002-03-28 03:19:31 +00:00
thorpej
0b109cd060 iwin_base_lo is a BAR value; make sure to mask off the non-address
bits when using it.
2002-03-27 23:17:03 +00:00