imx6q: force 100 Mbps instead of 1000 mbps

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx6q: force 100 Mbps instead of 1000 mbps

1,413 Views
pj0585
Contributor III

Hi,

I'm using custom hardware based on sabresd platform.

I'm running linux 3.0.35 (patch 2026) with yocto root filesystem.

I would like to force my linux system to use 100 Mbps network instead of 1000 Mbps. My custom hardware is giving problems at Gigabit speed and works very fine at 100 Mbps.

I can change network speed using "ethtool -s eth0 speed 100 autoneg off" but this can be done only after the initial network script is already started and for sometime the device is on 1000 Mbps network before switching to 100 Mbps.

So, is there any change in the system configuration such that when linux boots up, it gets 100 Mbps network directly?

Any inputs will be of help.

-Pj

Labels (3)
Tags (3)
0 Kudos
1 Reply

723 Views
steveanderson
Contributor II

Wow, this has been up here a long time...

I certainly hope you found your answer by now, but if you are still looking for an answer, I would like to trade potential answers with you...

The only way I have seen your particular problem managed during startup is in the Kernel.

In your platforms initialization code you would be able to limit the speed on the PHY during the 'fixup phy' step.

Since you are based on the sabreSD, the place to go would probably be .../arch/arm/mach-mx6/board-mx6q_sabresd.c

The custom platform I am developing for uses a ksz9031 PHY

But in any case the function there is mx6q_sabresd_fec_phy_init(...) which I have modified to my client's purposes:

We have a function mx6q_ccc_fec_phy_init(...) called through the imx6_init_fec(...) functionality.

This is in our board-xxxx.c file for our custom hardware, of course.

In that function I use the following:

/* prefer master mode, disable 1000 Base-T capable */
phy_write(phydev, 0x9, 0x1c00);

For your physical device the command may be a bit different, but I should think this might at least aim you on the path...

I cannot get the yocto root file system to work on my platform.

I am currently using poky 1.6.2

To get the 3.0.35 Kernel, the only way I found was to use Linux-boundary

Could you share how you configured your machine to get yocto to build 3.0.35 with a working filesystem?

--- edited to correct references to 3.10.17 code to be relevant for 3.0.35 code.

0 Kudos