Trouble with a dream plug...

Randall Stewart rrs at lakerest.net
Thu Sep 19 12:48:08 UTC 2013


Hi all:

I am playing with a DreamPlug which has the marvell 88F6281 chip set
in it:

http://www.globalscaletechnologies.com/p-54-dreamplug-devkit.aspx

The version number of this seems to be 3.

When I first tried to bring it up following the wiki:
https://wiki.freebsd.org/FreeBSDMarvell

I had no joy, the system would boot up until it tried to find the ethernet and die…

So with a bit of playing I figured out that the miiphy was incorrect, it was trying
to use 8 and I found with a bit of poking that the two phys are on 0 and 1 (There are
two Marvell Gig-E's on this critter).

Now after I got it to boot, I wanted to find a way to get the second ethernet up. Linux
(which comes with it of course) finds both of them so why can't I?

So after digging some and learning about the flattened device tree, I find that the layout of this in respect
to the ether-net is as follows (reported by a modified ofwdump.. I had to make it so that 
it did not exit when it sees a next-prop return an error, evidently this little arm just gives
you an error, not a 0 back when you hit the end of the properties). Anyway here is my 
ethernet description:
*********************************
    Node 0x840: ethernet at 72000
      #address-cells:
        00 00 00 01
      #size-cells:
        00 00 00 01
      model:
        56 32 00
        'V2'
      compatible:
        6d 72 76 6c 2c 67 65 00
        'mrvl,ge'
      reg:
        00 07 20 00 00 00 20 00
      ranges:   
        00 00 00 00 00 07 20 00 00 00 20 00
      local-mac-address:
        00 00 00 00 00 00
      interrupts:
        00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0b 00 00 00 2e
      interrupt-parent: 
        00 00 00 01  
      phy-handle:    
        00 00 00 02
      ------------Child of the E-net ------------
      Node 0x918: mdio at 0
        #address-cells:
          00 00 00 01
        #size-cells:
          00 00 00 00
        compatible:
          6d 72 76 6c 2c 6d 64 69 6f 00
          'mrvl,mdio'
        ---------Child of the mdio -----------
        Node 0x95c: ethernet-phy at 0
          reg:
            00 00 00 08
          phandle:
            00 00 00 02
****************************

From this you can see where the idea of the phy being at 8 is coming from. Its sure
enough is in the ethernet-phy. Now I am *not* sure what an mdio is supposed to do
for us, and even more strange is how does linux seem to be able to bring up both ports
on this?

The spec's say that the first port is at 72000 - 73fff and the second is at
76000 - 77fff. And of course with no FDT description we won't see it.

Is our friend linux just assuming that its at those addresses? We end up with
a list of IRQ's there as well 0xb, 0xc, 0xd, 0xe an 0x2e. Linux uses 0xb for eth0 and 0xf
for eth1.

Anyone out there familiar with why I can't see the second network? Is this a
bad fdt that came from the vendor? or do we need to just have driver hacks in
that "assume" the second one is there? If so I am not sure how to deal with the IRQ's
can we just allocate one? Linux seems fine with doing that unless there is something
I am missing in my limited understanding of the FDT stuff.

Any pointers or hints would be appreciated.


R


------------------------------
Randall Stewart
803-317-4952 (cell)



More information about the freebsd-arm mailing list