Re: yaboot: text mode or graphics mode?

2008-12-30 Thread Matt Sealey

sumedh tirodkar wrote:

I just found out that openfirmware boots into graphics mode(non-text
mode). Now i wish to switch back to text mode. how do i do this?


Unfortunately unless you are running some kind of yaboot-accessible or 
firmware-accessible x86 BIOS emulation, this isn't possible.


--
Matt
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: SRAM

2008-11-25 Thread Matt Sealey
Is it memory mapped somewhere? If it is you can emulate an MTD using the
"slram" driver.

Then you can just use whatever you like on top - JFFS2 or something that
thinks it's going to be on flash or something, ext2 if you're nuts. But,
seriously, with slram you *can* go nuts.

On Sun, Nov 23, 2008 at 12:37 PM, Thomas Johnson
<[EMAIL PROTECTED]>wrote:

>  We have a new PPC based board which includes some SRAM (actually Everspin
> MRAM).
>
> I can't work out the best way to mount this device or what filing system to
> run on it, any advice ?
>
> Thanks
>
> TJ
>
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Re: MPC512x SPI very high cpu load

2008-11-20 Thread Matt Sealey



Matteo Fortini wrote:

Hi,
we're using the latest denx tree on an mpc512x, and we have a 
touchscreen on the spi which is talking at 100kHz.


The polling frequency is 5ms and we transmit around 20 bytes per poll.

If we keep the touchscreen pressed, cpu utilization goes to 70% for the 
spi task. This is quite strange, since I thought the mpc512x would be 
using DMA to feed the PSC FIFOs.


If the SPI driver isn't using DMA then, it's not using DMA.

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Using Bestcomm API (DMA) on MPC5200b with Linux?

2008-10-27 Thread Matt Sealey

You know, Sylvain posted his patch the week after 2.6.23 was released
so I guess it's a big fat no.

However the original patchset or it 
(http://ozlabs.org/pipermail/linuxppc-dev/2007-October/044301.html)
should patch very easily.

The last thing you'd want is to code a driver using BestComm right now,
and then move to a new kernel later on in development and have to rewrite
it from scratch. The Freescale API really is dead as a dodo.

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Jon Smirl wrote:

Was the new BestComm support in the 2.6.23.1 kernel he is using?

On Thu, Oct 23, 2008 at 6:28 PM, Matt Sealey <[EMAIL PROTECTED]> wrote:

You need to write a task that does the DMA operation you want; GenBD is
actually pretty generic and lets you just copy from one place to another.

The API is pretty simple; make sure genbd is compiled in, get the task
structure using bcom_gen_bd_[tr]x_init, and then.. uhh.. this is where I
always forget.

There is a way to submit a buffer descriptor and have the engine basically
perform that transfer. I think it's bcom_prepare_next_buffer and then
bcom_submit_next_buffer.

Actually I can't even FIND those functions in the Linux tree right now, but
they have to be in there because the FEC driver uses them..

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Dave Best wrote:

I am trying to connect a FPGA/FIFO with my MPC5200b on a phytec PCM 030
board  while running a 2.6.23.1 Linux.

The Linux Kernel source contains an implementation for the Bestcomm API in
the form of a driver for ethernet (fec) and ATA.(situated in the
arch-powerpc/sysdev/bestcomm path) I tried to make use of it but i've run
into some problems.

So i tried to include the API in a module to utilize its functionality but
no luck till now.

Freescale supports the Bestcomm DMA API not on an OS level. So the problem
is adopting this API into a Linux environment, which distinguishes between
kernel space and user space while writing to the appropriate registers.

Further information is very hard to find for such a common task as
starting a DMA transfer.

Dave



 ___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded







___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Using Bestcomm API (DMA) on MPC5200b with Linux?

2008-10-23 Thread Matt Sealey
You need to write a task that does the DMA operation you want; 
GenBD is actually pretty generic and lets you just copy from 
one place to another.


The API is pretty simple; make sure genbd is compiled in, get 
the task structure using bcom_gen_bd_[tr]x_init, and then.. 
uhh.. this is where I always forget.


There is a way to submit a buffer descriptor and have the 
engine basically perform that transfer. I think it's 
bcom_prepare_next_buffer and then bcom_submit_next_buffer.


Actually I can't even FIND those functions in the Linux tree 
right now, but they have to be in there because the FEC driver 
uses them..


--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Dave Best wrote:

I am trying to connect a FPGA/FIFO with my MPC5200b on a phytec PCM 030 board  
while running a 2.6.23.1 Linux.

The Linux Kernel source contains an implementation for the Bestcomm API in the 
form of a driver for ethernet (fec) and ATA.(situated in the 
arch-powerpc/sysdev/bestcomm path) I tried to make use of it but i've run into 
some problems.

So i tried to include the API in a module to utilize its functionality but no 
luck till now.

Freescale supports the Bestcomm DMA API not on an OS level. So the problem is 
adopting this API into a Linux environment, which distinguishes between kernel 
space and user space while writing to the appropriate registers.

Further information is very hard to find for such a common task as starting a 
DMA transfer.

Dave



  
___

Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded



___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: performance: memcpy vs. __copy_tofrom_user

2008-10-14 Thread Matt Sealey



Scott Wood wrote:

BTW, it's actually simpler than I originally described (I had implemented
this years ago in the TimeSys kernel for x86 and some other arches that
already use FP or similar resources for memcpy, but the memory was a
little fuzzy); the FP restore code doesn't need to test anything, it
always restores from the regular spot.  The kernel code wishing to use FP
saves the user context in an alternate save area (it could even be on the
stack, allowing atomic context to use it as well, if it's not too large),
and restores it when it's done.


Sure, it's simple, the problem is that VRSAVE isn't maintained in the 
kernel, which means for AltiVec context switches you need to save and 
restore 32 128-bit registers every time. And that takes a LONG time..


Just imagine if you did a ~512 byte memcpy, you could guarantee that it 
would take twice as long as it should!


There are ways around it, like assembly and fixed registers, and saving 
the ones you use (this is the sort of thing gcc does for you usually, 
but you can do it by hand just as well) and restoring the ones you 
trashed afterwards, but that makes code messier and less readable.


Not insurmountable problems, but it makes using AltiVec harder. You
would have to really justify a speed increase. I think you could get
that on cryptography functions easily. For page zero/copying, I think 
you would also get the increase to outweigh the prologue/epilogue 
required and also the loss of preemption.


TCP/IP copy with checksum? Probably absolutely definitely..

Straight memcpy? I am not so sure.

Like I said I am far more worried about how you'd get a reasonable
benchmark out of it. Profiling kernels is a messy business..

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: performance: memcpy vs. __copy_tofrom_user

2008-10-13 Thread Matt Sealey

Scott Wood wrote:

Benjamin Herrenschmidt wrote:


Yuck.


Hmm?  It's simple and achieves the desired result (avoiding 
non-preemptible regions without unduly restricting the ability to 
extract performance from the hardware).


Would it be nicer to avoid FP/Altivec in the kernel altogether?  Sure. 
If the benchmarking says that we're better off with it, though, then so 
be it.


There should definitely be a nice API for an in-kernel AltiVec context
save/restore. When preemption happens doesn't it do some equivalent of
the userspace context switch? Why can't the preemption system take care
of it?

At worst case you make the worst case latency bigger, but at best case
you gain performance across the board.

One thing which is worrying me is that now that Ben has thrown down the
gauntlet (note, I'm not going to be coding a line, but I know a man who
can :) how on earth do we benchmark the differences here?

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: performance: memcpy vs. __copy_tofrom_user

2008-10-11 Thread Matt Sealey

Benjamin Herrenschmidt wrote:

On Thu, 2008-10-09 at 10:37 -0500, Matt Sealey wrote:

Ahem, but nobody here wants AltiVec in the kernel do they?


It depends. We do use altivec in the kernel for example for
RAID accelerations.

The reason where we require a -real-good- reason to do it is
simply because of the drawbacks. The cost of enabling altivec
in the kernel can be high (especially if the user is using it)
and it's not context switched for kernel code (just like the
FPU) for obvious performance reasons. Thus any use of altivec in the
kernel must be done within non-preemptible sections, which can
cause higher latencies in preemptible kernels.


Would the examples (page copy, page clear) be an okay place to do it?
These sections can't be preempted anyway (right?), and it's noted that
doing it with AltiVec is a tad faster than using MMU tricks or standard
copies?

In Scott's case, while "optimizing memcpy for 48byte blocks" was a joke,
this is 3 load/stores in AltiVec, which as long as every SKB is 16
byte aligned (is there any reason why it would not be? :)

skb_clone might not be something you want to dump AltiVec into and would
make a mess if an skb got extended somehow, but the principle is outlined
in a very good document from a very long time ago;

http://www.motorola.com.cn/semiconductors/sndf/conference/PDF/AH1109.pdf

I think a lot of it still holds true as long as you really don't care
about preemption under these circumstances (where network throughput
is more important, and where AltiVec actually *reduces* CPU time, the
overhead of disabling preemption is lower anyway). You could say the
same about the RAID functions - I bet LatencyTOP has a field day when
you're using RAID5 AltiVec. But if you're more concerned about fast disk
access, would you really care (especially since the algorithm is
automatically selected on boot, you've not much chance of having any
choice in the matter anyway)?

Granted it also doesn't help Scott one bit. Sorry :D

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: performance: memcpy vs. __copy_tofrom_user

2008-10-09 Thread Matt Sealey

Paul Mackerras wrote:

Dominik Bozek writes:


Actually I made couple of other tests on that mpc8313. Most of them are
to ugly to publish them, but... My problem is that I have to boost the
gigabit interface on the mpc8313. I made simple substitution and
__copy_tofrom_user was used instead of memcpy. I know, it's wrong, but I
speedup that way the network interface for about 10%.


Very interesting.  Can you work out where memcpy is being called on
the network data?  I wouldn't have expected that.


It probably is somewhere.. through some weird and wonderful code path that
needs some serious digging to find. At least in 2.4 memcpy was used and
optimizing it (see Freescale's libmotovec benchmarks) did produce a sizable
performance improvement. That, and offloading TCP checksumming to AltiVec
helped a lot.

No help at all on an 8313 but, relevant anyway.

Since then zero copy networking and other fancy things like the DMA
engine API (for intel ioat at least but also there is fsl dma support)
there's less to actually optimize now so you're less likely to see the
same benefits. All these got into mainline because it's essential to
have this kind of architecture to get reasonable speeds out of >gigabit
network links.


There is actually no strong reason not to use __copy_tofrom_user as
memcpy, in fact, as long as we are sure that source and destination
are both cacheable.


I do think there is probably a good benefit in doing things like zeroing
pages in AltiVec and copying entire pages with AltiVec (for instance
when copy-on-write happens in an application) - NetBSD and QNX implement
at least this because it's faster than using the cache management and
works fine on uncacheable pages too (also since you're always aligned to
a page, zeroing 4kb aligned to a 4kb boundary - or whatever your page
size happens to be, the number of errors that can occur are absolutely
tiny and performance can go through the roof).

Ahem, but nobody here wants AltiVec in the kernel do they?

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Quick question about dts

2008-08-06 Thread Matt Sealey


Marco Stornelli wrote:

M. Warner Losh ha scritto:

I have a .dts file that works with 2.6.18 (MV Pro 5.0).  I encode it
directly into the kernel image.  However, when I try to use it with my
2.6.23, 2.6.24 or 2.6.25 kernel trees, it doesn't work at all.  In the
MV Pro 5.0 kernel, I hacked the startup sequence to store a pointer to
this blob in r3 so that it is moved in.  I've done something similar
in -current (for reasons that are too complicated to really explain
well, we can't do this via the normal boot loader mechanisms).  The
dtc complains that the interrupt-controller property is obsolete on
the chosen device.

Does any documentation exist for how dts has evolved?  I'd like to
forward port what I have without examining the .dts files from both
versions and guessing...



Check out the kernel documentation booting-without-of.txt of your version.


Better yet, go get the ePAPR specification from Power.org?

It's easier to read :)

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


I2C and CAN bus on MPC5200B device tree

2008-01-13 Thread Matt Sealey

Hi guys,

I know the I2C stuff is up in the air (I cannot pinpoint the documentation
for it) and have not found any CAN bus documentation for device trees.

I want to update the firmware tree to add these but, am basically looking
for those docs, or someone to go over a few points.. is there some kind of
tree standard I should be looking at, or some patch I missed which has
a driver which implements something that looks at a compatible tree?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: use of fsl, in lite5200b.dts in git current

2007-11-10 Thread Matt Sealey
Jon Loeliger wrote:
> Matt Sealey wrote:
> 
>> this is a ridiculous
>> amount of specificity in a device tree, 
> 
> Except that some of that information _is_ specified elsewhere in other 
> properties.  Speed, for example.

Which is fine..

>> and it also does not match the
>> datasheet (MPC7448 is the name of the chip).
> 
> Because the data sheets are _s_ reliable. :-)

Be careful or I'll start looking for the datasheets with your name on it :)

>> Indeed, so.. at some point we should all sit down and hammer out the
>> major issues in describing something like the MPC5121E because right
>> now Genesi has a vested interest in that.
> 
> You understand that _that_ is being worked on as we, er, speak?

Yeah I've seen it, recognise your name from the top of the device tree
definition, and I must say, it's not the most ideal...

>> If we could all agree on how it should be mapped out, with an example
>> tree which shows *every damn thing available* so platform developers
>> can pick and choose and OF developers can use it as a reference, it
>> would make a much happier process.
> 
> Right.  It's being nailed down, but it is a slow, community process...

Why? Freescale's chip, open standards, just design it right, and tell
the community they should be conforming with it.

The slow community process would have had the Efika come out this
month instead of this time last year if we had waited to fix the
device tree to "the right way to do it".

The device tree, hardware description in general, is down to the
silicon vendor and ODM, and should provide description of the
hardware which allows any driver (not just the ones in the BSP)
to get enough information from the tree where necessary.

I don't see that in the MPC5200 tree and I still don't see it in
the examples of the MPC5121E tree.

I also note the few users of the MPC5121E that there are outside
of Freescale, aren't involved (ahem) in this process unless they
join these mailing lists. You can't discuss anything on here with
that chip, it's locked down by NDA, release date tenuous, feature
state tenuous.. documentation is in draft/preliminary and nobody
else has it.

>> By the way while I was poking around the tree today I noticed that
>> there is a PCI errata fixup handled by a Kconfig in there. Why?
> 
> Happens occasionally.  And other places as well.
> 
>> Surely
>> this is something you check the PVR/SVR for and switch on that for
>> a runtime solution, 
> 
> That's not always fine-grained enough to base a decision on it.

It is in this case isn't it? The errata states that it only appears
on that particular revision.

>> and not trick users with the possibility of
>> forgetting to enable some obscure "PCI errata fix" configuration
>> item? (CONFIG_PPC_MPC5200_BUGFIX)
> 
> It should be in the defconfig. :-)

It shouldn't be a configuration option at all in my opinion :)

You either fix the bug or you don't, if you have to fix it in a
generic, multi-chip (5200/5200B) API like the PCI stuff, it
should be handled on a if/else basis. There's practically no benefit
to having it as a configuration option and being able to compile
it out, in fact.. it rather makes the whole presence of the fix
more complicated (to support 5200 and 5200B you need to compile
in the fix, and that means 5200B chips are implementing it when
they don't need to - and you need to recompile to fix it).

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: use of fsl, in lite5200b.dts in git current

2007-11-08 Thread Matt Sealey
Jon Smirl wrote:
> On 11/8/07, Scott Wood <[EMAIL PROTECTED]> wrote:
>
>> I think you may be placing too much faith in the vendors.
>> Is a 7400 a Freescale powerpc chip, or a quad 2-input NAND gate? :-)
> 
> There has to be more to the part number for the Freescale powerpc chip
> than just 7400. 7400 is a shorthand name, it is not an orderable part number.

The orderable part numbers add 3 or 4 characters to the front and about
8 after. There is a difference between MPC7400 and PPC7400, and the
low voltage versions, and the different clock speeds. Orderable part
number for a recent G4 might be PPC7448B1333NL - this is a ridiculous
amount of specificity in a device tree, and it also does not match the
datasheet (MPC7448 is the name of the chip).

What people usually do is use what's in the datasheet.

>> If you want to argue that the "MPC" part differentiates them, that's
>> just a less readable and more obsolete vendor prefix.
> 
> The MPC is what is printed on the chip. fsl is not printed there. MPC
> is part of the orderable part number.

Not all of them *ahem* :)

Like I said, trust the datasheet, not the number on the chip.

>> Vendor prefixes on properties are useful in that it might not mean
>> exactly the same thing as a similar property that gets standardized
>> later on.
>>
>>> That's life in the Linux world, no backwards binary compatibility.
>> There's a huge difference between compatibility of kernel interfaces and
>> compatibility of interfaces between the kernel and something else --
>> whether it be userspace or firmware.

Indeed, so.. at some point we should all sit down and hammer out the
major issues in describing something like the MPC5121E because right
now Genesi has a vested interest in that. Thanks Grant for your
discussion on it, I agree of course :)

One thing we don't want to go through again is the complaints we got
because we named the chip node "/builtin" rather than "/soc". My fixup
script is still handling that mess because you guys refused to
accept it (and some drivers were coded to map from the MBAR contained
in device_type soc's reg property rather than find a real device).

If we could all agree on how it should be mapped out, with an example
tree which shows *every damn thing available* so platform developers
can pick and choose and OF developers can use it as a reference, it
would make a much happier process.

And then we can fix up the Efika to fit some definition of the new
MPC5200 tree too.

By the way while I was poking around the tree today I noticed that
there is a PCI errata fixup handled by a Kconfig in there. Why? Surely
this is something you check the PVR/SVR for and switch on that for
a runtime solution, and not trick users with the possibility of
forgetting to enable some obscure "PCI errata fix" configuration
item? (CONFIG_PPC_MPC5200_BUGFIX)

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: use of fsl, in lite5200b.dts in git current

2007-11-07 Thread Matt Sealey
Jon Smirl wrote:
> I'm not in favor of all these fsl prefixes. These chip families do get
> sold. What would we have done with intel,pxa320 all over the place
> when they sold it to marvell? mass changes to marvell,pxa320?

That's the idea, and there'd be a compatible entry for intel,pxa320.

Actually the spec says you should use the stock ticker (IBM, FSL, INTC,
JAVA, MRVL) if they have one and if not, the company name in lower case.

Freescale are a funny one because they used to have a stock ticker as
MOT and then FSL but now they're privately owned, so it's gonna have to
be lower case :]

It's just to seperate out the fact that sometimes you get chips with
very similar or identical names, or to mark out vendor-specific
functionality. fsl,has-wdt differs from has-wdt ideally because
Freescale watchdog timers aren't the same as other watchdog timers -
the term is pretty pliable, Freescale's GPT on the MPC52xx isn't
always a watchdog (it can be a normal, non-watchdog timer too..)

> The mpc/pxa parts numbers don't get changes when chip families get sold.

There is a case that between selling chips, some of them get updated
or bugfixed, and you can tell which one you have by the name.

There has to be some standardisation on the first implementation of
the device tree for the chip, otherwise the chopping and changing
gets rather tedious.

I'm sure you can see why we don't release firmware updates every time
some Linux guy changes some lousy, hacky tree definition for yet another
6 times a year, until it finally stabilises and the product is usually
discontinued anyway :D

However in the current situation it just means you need to flash new
FDT blobs to your U-Boots which are more clean, and keep your kernel
in sync, because Linux only handles what it currently thinks is the
standard.

The real loser is the real Open Firmware implementation, but nobody
seems to think about that, the device trees on OF devices get more
cluttered..

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: use of fsl, in lite5200b.dts in git current

2007-11-07 Thread Matt Sealey
Jon Smirl wrote:
> Sometimes the fsl prefix is being used and sometimes it isn't. Look at
> the two compatible strings. Which way is it going to be? Is
> fsl,has-wdt right?

fsl,has-wdt is right, at least since someone changed it.

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: pata_mpc52xx - no interrupts when using bestcomm/dma?

2007-10-03 Thread Matt Sealey
Hi guys,

I'm not sure if this is a particularly PowerPC problem - more ATA -
but I am curious if we just got rid of the MWDMA and UDMA stuff from
this patch, would it still work in a sort of PIO mode with the
BestComm task being invoked at the right times?

All BestComm needs to do is marshall the data back and forth, since
the ATA portion is covered by errata and 'hidden' bugs you can't rely
on FIFO errors or the automatic handling anyway..

On that note, seeing as it seems to be easily possible to invoke
a BestComm task on something other than a FIFO (just needs two
physical address pointers), does anyone feel motivated to try and
make some kind of memory copy handler/task which can be invoked
in the case of some memory activity required? Or, perhaps, work
out the PCI DMA TX/RX stuff and what it could be used for (I
personally don't understand how PCI DMA isn't handled by the
PCI arbiter anyway.. doesn't this mean no PCI DMA is ever done on
MPC5200 platforms right now??)

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Domen Puncer wrote:
> Hi!
> 
> I'm taking a stab at adding DMA support to pata_mpc52xx driver.
> 
> It's based on patches from Freescale's ltib (old ide driver).
> 
> 
> The problem is that I can't seem to get any interrupts
> (not ata, not bestcomm task), when setting up MWDMA/UDMA mode.
> 
> Ideas?
> 
> 
> My current patch:
> 
> ---
>  drivers/ata/pata_mpc52xx.c |  491 
> +++--
>  include/linux/libata.h |2 
>  2 files changed, 477 insertions(+), 16 deletions(-)
> 
> Index: work-powerpc.git/drivers/ata/pata_mpc52xx.c
> ===
> --- work-powerpc.git.orig/drivers/ata/pata_mpc52xx.c
> +++ work-powerpc.git/drivers/ata/pata_mpc52xx.c
> @@ -4,6 +4,7 @@
>   * libata driver for the Freescale MPC52xx on-chip IDE interface
>   *
>   * Copyright (C) 2006 Sylvain Munaut <[EMAIL PROTECTED]>
> + * Copyright (C) 2005,2006 Freescale - Bernard Kuhn, John Rigby
>   * Copyright (C) 2003 Mipsys - Benjamin Herrenschmidt
>   *
>   * This file is licensed under the terms of the GNU General Public License
> @@ -22,6 +23,8 @@
>  #include 
>  #include 
>  
> +#include 
> +#include 
>  
>  #define DRV_NAME "mpc52xx_ata"
>  #define DRV_VERSION  "0.1.0ac2"
> @@ -31,6 +34,14 @@
>  struct mpc52xx_ata_timings {
>   u32 pio1;
>   u32 pio2;
> + u32 mdma1;
> + u32 mdma2;
> + u32 udma1;
> + u32 udma2;
> + u32 udma3;
> + u32 udma4;
> + u32 udma5;
> + int using_udma;
>  };
>  
>  struct mpc52xx_ata_priv {
> @@ -39,6 +50,12 @@ struct mpc52xx_ata_priv {
>   int ata_irq;
>   struct mpc52xx_ata_timings  timings[2];
>   int csel;
> +
> + /* dma stuff follows */
> + struct bcom_task *  dmatsk;
> + const struct udmaspec * udmaspec;
> + const struct mdmaspec * mdmaspec;
> + int mpc52xx_ata_dma_last_write;
>  };
>  
>  
> @@ -53,6 +70,102 @@ static const int ataspec_ta[5]= { 35
>  
>  #define CALC_CLKCYC(c,v) v)+(c)-1)/(c)))
>  
> +/* ATAPI-4 MDMA specs (in clocks) */
> +struct mdmaspec {
> + u32 t0M[3];
> + u32 td[3];
> + u32 th[3];
> + u32 tj[3];
> + u32 tkw[3];
> + u32 tm[3];
> + u32 tn[3];
> +};
> +
> +// 
> ---
> +
> +static const struct mdmaspec mdmaspec66 = {
> + {32,  10,  8},
> + {15,  6,   5},
> + {2,   1,   1},
> + {2,   1,   1},
> + {15,  4,   2},
> + {4,   2,   2},
> + {1,   1,   1}
> +};
> +
> +static const struct mdmaspec mdmaspec132 = {
> + {64,  20,  16},
> + {29,  11,  10},
> + {3,   2,   2},
> + {3,   1,   1},
> + {29,  7,   4},
> + {7,   4,   4},
> + {2,   1,   1}
> +};
> +
> +
> +/* ATAPI-4 UDMA specs (in clocks) */
> +struct udmaspec {
> + u32 tcyc[6];
> + u32 t2cyc[6];
> + u32 tds[6];
> + u32 tdh[6];
> + u32 tdvs[6];
> + u32 tdvh[6];
> + u32 tfs_min[6];
> + u32 tli_max[6];
> + u32 tmli[6];
> + u32 taz[6];
> + u32 tzah[6];
> + u32 tenv_min[6];
> + u32 tsr[6];
> + u32 trfs[6];
> + u32 trp[6];
> + u32 tack[6];
> + u32 tss[6];
> +};
> +
> +static const struct udmaspec udmaspec66 = {
> + { 8,  5,  4,  3,  2,  2},
> + {16, 

Re: Efika, initrd and current kernel

2007-09-30 Thread Matt Sealey
How did you attach the initrd to the kernel?

Compiled in using the initramfs feature, or did you use mkvmlinuz 
(debian/ubuntu)
or mkzImage (suse) or have genkernel build it (--genzimage) on Gentoo? It looks
like you're trying to boot Gentoo from the boot line..

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Jon Smirl wrote:
> On 9/30/07, Sven Luther <[EMAIL PROTECTED]> wrote:
>> On Sun, Sep 30, 2007 at 10:09:47AM -0400, Jon Smirl wrote:
>>> On 9/30/07, Matt Sealey <[EMAIL PROTECTED]> wrote:
>>>> How did you build the kernel?
>>> I attached the .config
>>> Am I supposed to have both chrp and efika selected?
>> I think so, yes.
> 
> I have then both selected.
> 
> I'm sure it is something simple about how I have my kernel configured
> wrong but I can't figure out what it is. I have BLK_INITRD turned on.
> I can trace in the initrd code and see that it is exiting because
> strat_initrd is not set. start_initrd is set in the platform specfic
> code which I haven't figured out yet.
> 
> 
>> Friendly,
>>
>> Sven Luther
>>
> 
> 
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Efika, initrd and current kernel

2007-09-30 Thread Matt Sealey
How did you build the kernel?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Jon Smirl wrote:
> I'm trying to boot a current kernel on the Efika like this:
> boot hd:0 efika init=/linuxrc root=/dev/ram0 looptype=squashfs
> loop=/squashfs.img cdroot
> 
> It is not finding the initrd.
> I added some printks and start_initrd is not getting set.
> 
> The 2.6.19 gentoo kernel described here boots and finds the same initrd
> http://gentoo-wiki.com/Efika
> 
> Something is missing in the hand off from the OF to the kernel code.
> I'm poking around in powerpc/kernel/prom_init.c
> looking for answers.
> 
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: OF /chosen/initrd,* variables - patch, official?

2007-08-21 Thread Matt Sealey
David Gibson wrote:
> On Tue, Aug 21, 2007 at 01:58:31PM +0100, Matt Sealey wrote:
>> David Gibson wrote:
>>> Uh... no... this is in the bootwrapper, long before ppc_md even
>>> exists.  platform_init() is called from arch/powerpc/boot/crt0.S,
>>> immediately before main().
>> Oh *THAT* platform init.
>>
>> So I could just drop a
>>
>> } else {
>>  dt_find_initrd();
>> }
>>
>> .. at the end and nobody would be too disgusted or have any problems?
> 
> Err.. at the end of what?  Each platform has it's own version of
> platform_init().

arch/powerpc/boot/of.c since it's not really relevant to me for non-OF
platforms?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: OF /chosen/initrd,* variables - patch, official?

2007-08-21 Thread Matt Sealey

David Gibson wrote:
> Uh... no... this is in the bootwrapper, long before ppc_md even
> exists.  platform_init() is called from arch/powerpc/boot/crt0.S,
> immediately before main().

Oh *THAT* platform init.

So I could just drop a

} else {
dt_find_initrd();
}

.. at the end and nobody would be too disgusted or have any problems?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: OF /chosen/initrd,* variables - patch, official?

2007-08-21 Thread Matt Sealey
David Gibson wrote:
> On Tue, Aug 21, 2007 at 12:21:18PM +0100, Matt Sealey wrote:
>> Damn, I should use patchwork more efficiently;
>>
>> http://patchwork.ozlabs.org/linuxppc/patch?q=initrd&filter=none&id=12168
>>
>> Does anyone have any suggestion on the best way to integrate this so that
>> it "just works" on OF platforms? It seems only to be usable way too late
>> in boot to work, this code would have to be called in boot/main.c which seems
>> relatively.. impossible to achieve.. or called in some specialised platform
>> init code..
> 
> It would have to be called from platform_init().  If called in main()
> it would clobber any other platform-specific initialization of the
> initrd parameters in loader_info.

So just to get this straight.. platform_init would be the function called from
md.init or would be better at md.setup_arch?

My goal right now is get something for CHRP (Pegasos) and Efika and try not
to cause problems for anything else, but also really try not to clutter the
thing with config checks, platform checks etc.

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: OF /chosen/initrd,* variables - patch, official?

2007-08-21 Thread Matt Sealey
Damn, I should use patchwork more efficiently;

http://patchwork.ozlabs.org/linuxppc/patch?q=initrd&filter=none&id=12168

Does anyone have any suggestion on the best way to integrate this so that
it "just works" on OF platforms? It seems only to be usable way too late
in boot to work, this code would have to be called in boot/main.c which seems
relatively.. impossible to achieve.. or called in some specialised platform
init code..

I hacked up a patch initially before I saw Milton's work and did it all
in main.c (and did the same to mkvmlinuz..) and it seemed to work okay
there.

I'm really curious as to the status and usefulness of this here.. :(

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Matt Sealey wrote:
> Hi guys,
> 
> Just a query here, there was a patch for /chosen/initrd,start and initrd,end
> variables gained from firmware or so, which allowed booting without getting
> those values into r3/r4, does anyone know the maintainer/author of that
> patch?
> 
> Also, what are the chances of pushing it for 2.6.23 or 2.6.24? I can imagine
> it's fairly useful (at least it is to me)..
> 
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


OF /chosen/initrd,* variables - patch, official?

2007-08-21 Thread Matt Sealey
Hi guys,

Just a query here, there was a patch for /chosen/initrd,start and initrd,end
variables gained from firmware or so, which allowed booting without getting
those values into r3/r4, does anyone know the maintainer/author of that
patch?

Also, what are the chances of pushing it for 2.6.23 or 2.6.24? I can imagine
it's fairly useful (at least it is to me)..

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: [RFC PATCH v0.1] net driver: mpc52xx fec

2007-08-20 Thread Matt Sealey
Are you sure this is correct for the Efika?

The MPC5200B manual makes a decent distinction between MII operation and
straight MDIO?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Domen Puncer wrote:
> On 20/08/07 10:31 +0200, Domen Puncer wrote:
>> On 19/08/07 16:39 +0100, Matt Sealey wrote:
>>> Domen,
>>>
>>> Do it in a Forth script, or in nvramrc (after probe-all). Don't clutter
>>> Linux with more fixups. The Efika PHY isn't going to change to something
>>> else and it's a bog standard no-frills MII PHY anyway.
>> Fine with me, but I'm worried people won't update nvramrc.
>>
> ...
>> But I have a problem with it, possibly due to my not-knowledge of Forth.
>> Compatible keep getting set to:
>>  compatible"/builtin/etherne"
> 
> I missed the encode-string.
> 
> Matt, can you please add attached Forth script to Efika updates.
> 
> 
>   Domen
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: [RFC PATCH v0.1] net driver: mpc52xx fec

2007-08-19 Thread Matt Sealey
Domen,

Do it in a Forth script, or in nvramrc (after probe-all). Don't clutter
Linux with more fixups. The Efika PHY isn't going to change to something
else and it's a bog standard no-frills MII PHY anyway.

I think it is a distinction that the OF docs forgot to make, that the
client interface is *all those Forth words* and not just the 6 or 7
distinct, special callable functions like claim (they exist because of
the simple fact that claiming memory shouldn't involve claiming memory
and such other paradoxes) and call-method. Call-method is a perfectly
valid way of doing things.

But, I'd really recommend you please think of a different way.. if you
want to spec out a device tree entry for it I'll update my script which
I am probably going to stick as an 'official' Genesi support file in
the next week.

If you insist on using prom_init and fixups, yaboot has the best
examples of call-method and interpret, both readable and fairly
easily available.

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Domen Puncer wrote:
> Hi!
> 
> On 10/08/07 11:51 +0200, Domen Puncer wrote:
>> Index: work-powerpc.git/arch/powerpc/boot/dts/lite5200b.dts
>> ===
>> --- work-powerpc.git.orig/arch/powerpc/boot/dts/lite5200b.dts
>> +++ work-powerpc.git/arch/powerpc/boot/dts/lite5200b.dts
>> +[EMAIL PROTECTED] {
>> +#address-cells = <1>;
>> +#size-cells = <0>;
>> +device_type = "mdio";
>> +compatible = "mpc5200b-fec-phy";
>> +reg = <3000 400>;   // fec range, since we need to 
>> setup fec interrupts
>> +interrupts = <2 5 0>;   // these are for "mii command 
>> finished", not link changes & co.
>> +interrupt-parent = <&mpc5200_pic>;
>> +
>> +phy0:[EMAIL PROTECTED] {
>> +device_type = "ethernet-phy";
>> +reg = <0>;
>> +};
>>  };
> 
> I am struggling with this part on Efika.
> I would like to add this to the device tree from
> fixup_device_tree_efika() (arch/powerpc/kernel/prom_init.c).
> 
> AFAICS client-services doesn't offer anything like new-device,
> so I guess "interpret" or "call-method" will have to be used.
> 
> I have read some docs, but I'm still wandering in the dark.
> Can I please get an example?
> Pretty please with a cherry on top?
> 
> 
>   Domen
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: MPC5200 and Bestcomm

2007-08-13 Thread Matt Sealey
The current (2.6.22) patchset for the Efika is being held here for
the moment; http://dev.gentoo.org/~nixnut/efika/

That's everything you 'really need' and it's probably the same as
this patch list.

However practically none of it is mainline-worthy at the moment,
Sylvain has detailed too many things he thinks is wrong with it.

I'm having a go with the new ethernet driver patch right now (a
customer asked me for a prebuilt kernel..) so I can get on with
testing that. The most important ones for rewrites besides that
are the AC97 driver (which is a little.. sparse) and actually
using the ATA task.

I'll put in a decent request here for any work on this subject to
please at least attempt to retrieve the tasks from the Efika
firmware rather than replacing them in Linux gratuituously.
I understand this doesn't help the Lite5200 guys.. but.. pretty
please with a cherry on top? :]

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Jon Smirl wrote:
> Another series is being posted to the Efika boards.
> 
> 0001-powerpc-exports-rheap-symbol-to-modules.patch
> 0002-powerpc-Changes-the-config-mechanism-for-rheap.patch
> 0003-powerpc-ppc32-Update-mpc52xx_psc-structure-with-B-r.patch
> 0004-powerpc-BestComm-core-support-for-Freescale-MPC5200.patch
> 0005-powerpc-BestcComm-ATA-task-support.patch
> 0006-powerpc-BestcComm-FEC-task-support.patch
> 0007-powerpc-BestcComm-GenBD-task-support.patch
> 0008-drivers-net-Add-support-for-Freescale-MPC5200-SoC-i.patch
> 0009-sound-Add-support-for-Freescale-MPC5200-AC97-interf.patch
> 0010-powerpc-In-rheap.c-move-the-EXPORT_SYMBOL-and-use.patch
> 0011-powerpc-BestComm-move-the-EXPORT_SYMBOL-and-use-th.patch
> 0012-powerpc-BestComm-ATA-task-move-the-EXPORT_SYMBOL-a.patch
> 0013-powerpc-BestComm-FEC-task-move-the-EXPORT_SYMBOL-a.patch
> 0014-powerpc-BestComm-GenBD-task-move-the-EXPORT_SYMBOL.patch
> 0015-powerpc-BestComm-Replace-global-variable-bcom-by-b.patch
> 0016-powerpc-Make-the-BestComm-driver-a-standard-of_plat.patch
> 0017-powerpc-Fix-typo-in-BestComm-ATA-task-support-code.patch
> 0018-powerpc-BestComm-ATA-task-microcode-insert-copyri.patch
> 0019-powerpc-BestComm-FEC-task-microcode-insert-copyri.patch
> 0020-powerpc-BestComm-GenBD-task-microcode-insert-copy.patch
> 0021-powerpc-Fix-errors-in-bcom-bcom_eng-renaming.patch
> 0081-mpc52xx-correct-calculation-of-FEC-RX-errors.patch
> 0082-powerpc-pata_mpc52xx-suspend.patch
> 
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: [kernel-2.6.19]Marvell GT-64260 and Ethernet

2007-07-10 Thread Matt Sealey
Isn't the ethernet the same on the 64260, 64360, 64460?

There's definitely a driver for 6436x and above..

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

ThomasB wrote:
> Hi all,
> I'm porting a Linux kernel 2.6.19 on a PowerPC 750 FX board.
> My Linux runs completely except for Ethernet. I don't find any Ethernet
> driver for my bridge. Do you know if there is an Ethernet driver for the
> Marvell GT-64260 bridge for PowerPC processor. I found a GT-64260
> ethernet driver in the kernel 2.4.34 for MIPS processor, will it be
> possible to port it in a 2.6 kernel?
> Thanks for you help.
> 
> 
> -- 
> ThomasB
> http://psyphi.zeblog.com/ <http://psyphi.zeblog.com/>
> 
> 
> 
> 
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Mem-2-Mem DMA - Generalized API

2007-06-25 Thread Matt Sealey
Clifford Wolf wrote:
> Hi,
>
> However, i don't think that implementing stuff like memset() in a dma
> controller is any good because that would just flood the memory bus which
> would then block in 99% of all cases the cpu until the dma is finished.
>
> It would however cost less power than doing that in the CPU. ;-)

At least while the DMA transfer is happening, you could preempt to some
other task. Would it flood the memory bus? When a DMA transfer happens
would it really do it in such a way that it would stall the CPU on a
memory access far more than it would usually?

I think it would have to be extremely badly designed to be even ABLE to do
that, or at least, you'd be doing some incredibly unwise things to be able
to flood it like that.

>> Indeed. I wonder if we could pull apart the IOAT/DMA stuff and genericise
>> it (it should be possible) or simply add to it, or if making a powerpc
>> specific dma engine abstraction would be an easier idea.
>
> I don't think that this would actually be powerpc specific in any way. But
> since such general purpose dma controllers are more common in embedded
> hardware this still seams to be the right place to discuss the issue.

I meant powerpc platform (as in ARCH=powerpc) specific. Rather than dropping
it in the global drivers, just keep it as a library for powerpc. Everyone
else can get it later with a move into the full tree. As long as the headers
have common, easy to get to names that do not conflict with anything
preexisting, it would not affect anything.

Taking IOAT as an example and fixing it's weirdness would be a better start
than making a whole new API, but I think doing development *WITH* IOAT and
potentially trashing all.. umm.. 4 users, and the weird Linux kernel tripling
of development cost when heavily updating an actively maintained subsystem
that everyone else wants to touch, that would be detrimental. We don't want
to break Intel and we don't want to be tracking Intel's patches or having
extra weirdness break in (or for the number of users of that DMA system to
explode underneath New DMA Development)

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Mem-2-Mem DMA - Generalized API

2007-06-25 Thread Matt Sealey

Clemens Koller wrote:
> Hello, Matt!
> 
>> There is so much you can do with most SoC DMA controllers, and it's not
>> even limited to PowerPC (most ARM/XScale SoCs have very capable devices
>> inside too). I can only imagine that nobody got excited over IOAT because
>> the entire programming interface stinks of "offloading gigabit ethernet"
>> and not much else.
> 
> The main question remains: Is it possible to have a flexible cross platform
> DMA API which handles even complex requests and does scheduling,
> prioritizing, queuing, locking, (re-)building/caching of SG lists... 
> automagically.

I would think so. I think there is a fairly generic example in many parts
of the Linux kernel. Dare I say the Via Unichrome AGP subsystem? And a
bunch of the ARM/OMAP platforms..? A lot of the code is even identical,
I wonder why it isn't some library rather than platform drivers.

> Filling memory with zero is also a simple task for a DMA engine.
> (Thinking about malloc() and memset())

Also xor and logical operations, byte swapping huge chunks of data, that
kind of thing. Most DMA engines in SoCs have cute features like that. I
think BestComm can even calculate CRCs for IP packets.

> The problem is IMHO similar to video acceleration. Within the
> Xorg's XAA/EXA/whatever framework, the drivers accelerate certain
> calls if the hardware has the capability to do so. Other calls fall back
> to some default non accelerated memcpy() & friends.
> 
> Sounds like a lot of fun... replacing kernel's and libc's memcpy() with
> memcpy_with_dma_if_possible(). :-)

Indeed. I wonder if we could pull apart the IOAT/DMA stuff and genericise
it (it should be possible) or simply add to it, or if making a powerpc
specific dma engine abstraction would be an easier idea.

Probably the latter to be merged with the former at a later date would
be easier to manage. Take inspiration but don't be bound by Intel's
weird "new" (i.e. 15 year old) concept?

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Re: Mem-2-Mem DMA - Generalized API

2007-06-25 Thread Matt Sealey
IOAT and Intel's DMA engine driver is very IOAT specific in places..

I had a peek at it as I have a little interest in the concept; at least the
two platforms Genesi has been supporting (Pegasos and Efika) have quite
competant DMA engines which are woefully underused (i.e. not at all).

There exists a Marvell DMA driver somewhere (I have a copy, someone on
this list posted it about a year ago) and while the MPC5200B doesn't have
explicit support for DMA from memory to memory (although memory to SRAM
might work in chunks, or memory to a FIFO wired as a loopback like in
the docs..??)

There is so much you can do with most SoC DMA controllers, and it's not
even limited to PowerPC (most ARM/XScale SoCs have very capable devices
inside too). I can only imagine that nobody got excited over IOAT because
the entire programming interface stinks of "offloading gigabit ethernet"
and not much else.

-- 
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Arnd Bergmann wrote:
> On Sunday 24 June 2007, Clifford Wolf wrote:
>> I'm working on an MPC8349E based project and as some of you might know this
>> chip has a four channel (bus-) memory-to-memory DMA controller.
>>
>> Unfortunately the linux kernel is atm lacking a generic interface for such
>> DMA controllers.
> 
> So what's wrong with the include/linux/dmaengine.h API? I thought it was
> designed to cover this sort of DMA controller?
> 
>   Arnd <><
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
___
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded