Gianfar Ethernet Device Driver used in MPC8641D-HPCN
Ashish Khetan
curieux.khetan at gmail.com
Mon Apr 14 00:32:13 EDT 2014
hi all,
I think i found the solution. It was because of the device tree property
"phy-connection-type = "rgmii-id";". By default for all ports the
connection type was "rgmii-id" and we are also using "rgmii" phy type. So I
changed it to "rgmii" only and now all ports are working..
On Wed, Apr 9, 2014 at 2:40 PM, Ashish Khetan <curieux.khetan at gmail.com>wrote:
> Hi,
> I Have MPC8641D-HPCN based custom designed board and After some changes
> the Linux 3.14 is now booting on my board. we are using same phy device ie
> vitesse vsc8244. The Difference between my board and the original board is
> in only PHY interrupt ie
>
> Our custom Designed Board MPC8641D-HPCN original board
> eTSEC0(mac)----> phy0 ---- irq0 eTSEC0(mac)----> phy0 ----
> irq10
> eTSEC1(mac)----> phy1 ---- irq1 eTSEC1(mac)----> phy1 ----
> irq10
> eTSEC2(mac)----> phy2 ---- irq2 eTSEC2(mac)----> phy2 ----
> irq10
> eTSEC3(mac)----> phy3 ---- irq3 eTSEC3(mac)----> phy3 ----
> irq10
>
> After Booting Linux the first Ethernet device is only eTSEC0 is working
> means at booting time it detects all 4 ports and initialize all ports. The
> following IP addresses are assigned to each port:
>
> interface Board IP Host IP
> eth0 ---- 192.168.10.2 192.168.10.1
> eth1 ---- 192.168.20.2 192.168.20.1
> eth2 ---- 192.168.30.2 192.168.30.1
> eth3 ---- 192.168.40.2 192.168.40.1
>
> when i Tried to ping from board to host (ie ping 192.168.10.1) through
> eth0 its pinging. but when i tried to ping from other ports ie eth1, eth2 &
> eth3 its not pinging and prints "destination host not reachable". Also I
> tried to ping from pc(ie host) to board same result was printing.
>
> Then I started debugging, I put a printk function inside Gianfar.c file
> and gfar_clean_rx_ring() for printing packet sequence and packet size. I
> started pinging each port from pc (ie host) and its printing on each
> reception as:
> For eth0
> [ 94.966113] Packet 1 size 60
> [ 95.965588] Packet 2 size 120
> [ 97.980729] Packet 3 size 180
> [ 98.980705] Packet 4 size 240
> [ 99.998872] Packet 5 size 300
>
> and same for other interfaces too.
>
> Here is the device tree snap-shot for ethernet which I am using with this
> kernel (hope may be helpful):
>
> enet0: ethernet at 24000 {
> #address-cells = <1>;
> #size-cells = <1>;
> cell-index = <0>;
> device_type = "network";
> model = "TSEC";
> compatible = "gianfar";
> reg = <0x24000 0x1000>;
> ranges = <0x0 0x24000 0x1000>;
> local-mac-address = [ 00 00 00 00 00 00 ];
> interrupts = <29 2 30 2 34 2>;
> interrupt-parent = <&mpic>;
> tbi-handle = <&tbi0>;
> phy-handle = <&phy0>;
> phy-connection-type = "rgmii-id";
>
> mdio at 520 {
> #address-cells = <1>;
> #size-cells = <0>;
> compatible = "fsl,gianfar-mdio";
> reg = <0x520 0x20>;
>
> phy0: ethernet-phy at 0 {
> interrupt-parent = <&mpic>;
> interrupts = <0 1>;
> reg = <0>;
> device_type = "ethernet-phy";
> };
> phy1: ethernet-phy at 1 {
> interrupt-parent = <&mpic>;
> interrupts = <1 1>;
> reg = <1>;
> device_type = "ethernet-phy";
> };
> phy2: ethernet-phy at 2 {
> interrupt-parent = <&mpic>;
> interrupts = <2 1>;
> reg = <2>;
> device_type = "ethernet-phy";
> };
> phy3: ethernet-phy at 3 {
> interrupt-parent = <&mpic>;
> interrupts = <3 1>;
> reg = <3>;
> device_type = "ethernet-phy";
> };
> tbi0: tbi-phy at 11 {
> reg = <0x11>;
> device_type = "tbi-phy";
> };
> };
> };
> enet1: ethernet at 25000 {
> #address-cells = <1>;
> #size-cells = <1>;
> cell-index = <1>;
> device_type = "network";
> model = "TSEC";
> compatible = "gianfar";
> reg = <0x25000 0x1000>;
> ranges = <0x0 0x25000 0x1000>;
> local-mac-address = [ 00 00 00 00 00 00 ];
> interrupts = <35 2 36 2 40 2>;
> interrupt-parent = <&mpic>;
> tbi-handle = <&tbi1>;
> phy-handle = <&phy1>;
> phy-connection-type = "rgmii-id";
>
> mdio at 520 {
> #address-cells = <1>;
> #size-cells = <0>;
> compatible = "fsl,gianfar-tbi";
> reg = <0x520 0x20>;
>
> tbi1: tbi-phy at 11 {
> reg = <0x11>;
> device_type = "tbi-phy";
> };
> };
> };
>
>
> Is this happening because of phy interrupt or something else? Please
> through some light on this. how to make it working? how to disable phy
> interrupt? Does phy interrupt matters for gianfar interrupt or polling mode?
>
> Please give some pointer/anything to help more understanding of ethernet
> driver.
>
> Thanks And Regards
>
> A$hi$h
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140414/a07a6dba/attachment.html
More information about the Kernelnewbies
mailing list