Wolfgang,<br><br>Welcome to my world and why I gave up on this months ago.<br><br>Everyone else,<br><br>One thing to consider here is a rewrite with the goal of a new improved fec driver that would work on both 5121 and the various mx platforms that also have this same fec core.<br>
<br>Also don&#39;t forget that the register map is the same on 512x, mx and coldfire platforms but not on the other ppc platforms so if you want to one binary to rule them all you will need to have an offest table or some such.<br>
<br>John<br><br><div class="gmail_quote">On Thu, May 7, 2009 at 8:09 AM, Grant Likely <span dir="ltr">&lt;<a href="mailto:grant.likely@secretlab.ca">grant.likely@secretlab.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Wed, May 6, 2009 at 4:41 PM, Wolfgang Denk &lt;<a href="mailto:wd@denx.de">wd@denx.de</a>&gt; wrote:<br>
&gt; Dear Grant,<br>
&gt;<br>
&gt; In message &lt;<a href="mailto:fa686aa40905061529u11b231afle3b5bb10a2334ad0@mail.gmail.com">fa686aa40905061529u11b231afle3b5bb10a2334ad0@mail.gmail.com</a>&gt; you wrote:<br>
&gt;&gt;<br>
&gt;&gt; &gt; Agreed that it&#39;s ugly, but duplicatio9ng the code would have been even<br>
&gt;&gt; &gt; worse. I don&#39;t think that it has multiplatform - at least not as long<br>
&gt;&gt; &gt; as you don&#39;t ask for one image that runs on 83xx and on 512x.<br>
&gt;&gt;<br>
&gt;&gt; Actually, I *am* asking for one image that runs on 83xx, 52xx and<br>
&gt;&gt; 521x.  I already can and do build and test a single image which boots<br>
&gt;&gt; on all my 52xx boards, on my 8349 board, and on my G4 Mac.<br>
&gt;<br>
&gt; He. I was afraid you&#39;d say that ;-)<br>
&gt;<br>
&gt; In this case I need a helping hand as I can&#39;t figure out how to make<br>
&gt; this work. Any suggestions?<br>
<br>
</div>Hmmm, it is rather ugly because the layout of fec_t is so different.<br>
Easiest solution would be to duplicate the driver in its entirety, but<br>
as you say it results in a lot of duplicate code.  It might be the<br>
lesser of many weevils though.<br>
<br>
Second easiest would be to factor out all the common code in the<br>
driver into a separate .c file that gets included by a &#39;wrapper&#39; .c<br>
file for each config which first includes the correct definition of<br>
fec_t.  This approach solves the duplicate code problem, but it also<br>
fell out of the ugly tree and hit every branch on the way down.<br>
<br>
ie: the wrappers would look something like this:<br>
<br>
fs_enet_cpm1.c:<br>
#include &lt;asm/cpm1.h&gt;<br>
#include &quot;fs_enet_main.c&quot;<br>
<br>
fs_enet_cpm2.c:<br>
#include &lt;asm/cpm2.h&gt;<br>
#include &quot;fs_enet_main.c&quot;<br>
<br>
fs_enet_512x.c:<br>
#include &lt;asm/mpc512x.h&gt;<br>
#include &quot;fs_enet_main.c&quot;<br>
<br>
And then the makefile would be something along the lines of:<br>
obj-${CONFIG_FS_ENET_CPM1_ += fs_enet_cpm1.o<br>
obj-${CONFIG_FS_ENET_CPM2_ += fs_enet_cpm2.o<br>
obj-${CONFIG_FS_ENET_MPC512x_ += fs_enet_512x.o<br>
<br>
A brief look at the driver suggests that access to the fec_t structure<br>
is restricted to the fec-mii.c and mac-fec.c files.  It might be<br>
appropriate to duplicate just those files and do some form of<br>
fs_enet_ops to select between them.<br>
<br>
While on the topic, it looks to me like the driver could really use<br>
some refactoring love.  Having multiple definitions of &quot;fec_t&quot; is<br>
confusing and potentially lead to hard to find bugs if the wrong<br>
header gets included by anyone.  I&#39;d like to see all the fec specific<br>
stuff in arch/powerpc/include/asm moved into drivers/net/fs_enet and<br>
renamed to reflect the hardware it is associate with.  Stuff like<br>
&quot;fec_t&quot; is far to generic, not to mention that typedefs are<br>
discouraged now.<br>
<br>
Regardless, I feel your pain.  It is not a pretty situation.<br>
<div><div></div><div class="h5"><br>
g.<br>
<br>
--<br>
Grant Likely, B.Sc., P.Eng.<br>
Secret Lab Technologies Ltd.<br>
</div></div></blockquote></div><br>