forked from Minki/linux
dcf2191933
I've noticed occasional random oopsing on my gateway machine since I upgraded it to use device tree based booting. As this machine has worked reliably before that for a few years, pretty much the only difference was narrowed down to the GPMC timings. Turns out that for legacy based booting we are using bootloader timings for GPMC for smsc911x. With device tree we are passing the timings in the .dts file, and the device tree timings are not quite suitable for LAN9920. Enabling DEBUG in gpmc.c I noticed that the device tree configured timings are different from the the known working bootloader timings. So let's fix the timings to match the bootloader timings when looked at the gpmc dmesg output with DEBUG enabled. The changes were done by multiplying the bootloader tick values by six to get the nanosecond value for device tree. This is not generic from the device point of view as the calculations should be based on the device timings. Anyways, further improvments can be done based on the timings documentation for LAN9220. But let's first get things to a known good working state. Note that we still need to change the timings also for sb-t35 also as it has two LAN9220 instances on GPMC and we can currently include the generic timings only once. Also note that any boards that have LAN9221 instead of LAN9220 should be updated to use omap-gpmc-smsc9221.dtsi instead of omap-gpmc-smsc911x.dtsi. The LAN9221 timings are different from LAN9220 timings. Cc: Christoph Fritz <chf.fritz@googlemail.com> Cc: Dmitry Lifshitz <lifshitz@compulab.co.il> Cc: Javier Martinez Canillas <javier@dowhile0.org> Signed-off-by: Tony Lindgren <tony@atomide.com>
50 lines
1.1 KiB
Plaintext
50 lines
1.1 KiB
Plaintext
/*
|
|
* Common file for GPMC connected smsc911x on omaps
|
|
*
|
|
* Note that the board specifc DTS file needs to specify
|
|
* ranges, pinctrl, reg, interrupt parent and interrupts.
|
|
*/
|
|
|
|
/ {
|
|
vddvario: regulator-vddvario {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vddvario";
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdd33a: regulator-vdd33a {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vdd33a";
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
|
|
&gpmc {
|
|
ethernet@gpmc {
|
|
compatible = "smsc,lan9221", "smsc,lan9115";
|
|
bank-width = <2>;
|
|
gpmc,mux-add-data;
|
|
gpmc,cs-on-ns = <1>;
|
|
gpmc,cs-rd-off-ns = <180>;
|
|
gpmc,cs-wr-off-ns = <180>;
|
|
gpmc,adv-rd-off-ns = <18>;
|
|
gpmc,adv-wr-off-ns = <48>;
|
|
gpmc,oe-on-ns = <54>;
|
|
gpmc,oe-off-ns = <168>;
|
|
gpmc,we-on-ns = <54>;
|
|
gpmc,we-off-ns = <168>;
|
|
gpmc,rd-cycle-ns = <186>;
|
|
gpmc,wr-cycle-ns = <186>;
|
|
gpmc,access-ns = <144>;
|
|
gpmc,page-burst-access-ns = <24>;
|
|
gpmc,bus-turnaround-ns = <90>;
|
|
gpmc,cycle2cycle-delay-ns = <90>;
|
|
gpmc,cycle2cycle-samecsen;
|
|
gpmc,cycle2cycle-diffcsen;
|
|
vddvario-supply = <&vddvario>;
|
|
vdd33a-supply = <&vdd33a>;
|
|
reg-io-width = <4>;
|
|
smsc,save-mac-address;
|
|
};
|
|
};
|