Other Parts Discussed in Thread: TIDA-00204
Tool/software: Linux
Hi.
In our board used schematic (Scheamtic and PCB) from TIDA-00204 in case of RGMII PHY connections.
I read a lot of threads, but still can not confugre PHY in .dts file correctly (or, may be, trouble in somewhere else) and ethernet link not worked.
This is kernel log:
....
[ 4.482862] libphy: Fixed MDIO Bus: probed
[ 4.570438] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 4.576600] davinci_mdio 4a101000.mdio: detected phy mask fffefffe
[ 4.598556] libphy: 4a101000.mdio: probed
[ 4.602910] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver TI DP83867
[ 4.612643] davinci_mdio 4a101000.mdio: phy[16]: device 4a101000.mdio:10, driver TI DP83867
[ 4.625478] cpsw 4a100000.ethernet: Detected MACID = 50:f1:4a:0b:83:c3
[ 4.634173] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
.....
Configuring network interfaces...
[ 17.639502] net eth0: initializing cpsw version 1.12 (0)
[ 17.674958] net eth0: initialized cpsw ale version 1.4
[ 17.680158] net eth0: ALE Table size 1024
[ 17.705193] net eth0: phy "4a101000.mdio:00" not found on slave 0, err -19
[ 17.714481] TI DP83867 4a101000.mdio:00: attached PHY driver [TI DP83867] (mii_bus:phy_addr=4a101000.mdio:00, irq=-1)
[ 17.768872] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 17.776365] 8021q: adding VLAN 0 to HW filter on device eth0
udhcpc (v1.24.1) started
Sending discover...
[ 19.841857] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 19.852736] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sending discover...
Sending discover...
No lease, forking to background
done.
This is ifconfig response:
eth0 Link encap:Ethernet HWaddr 50:f1:4a:0b:83:c3
inet6 addr: fe80::52f1:4aff:fe0b:83c3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:71 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:20330 (19.8 KiB)
Interrupt:172
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
Response of "ethtool -S eth0":
NIC statistics:
Good Rx Frames: 0
Broadcast Rx Frames: 0
Multicast Rx Frames: 0
Pause Rx Frames: 0
Rx CRC Errors: 0
Rx Align/Code Errors: 0
Oversize Rx Frames: 0
Rx Jabbers: 0
Undersize (Short) Rx Frames: 0
Rx Fragments: 0
Rx Octets: 0
Good Tx Frames: 126
Broadcast Tx Frames: 110
Multicast Tx Frames: 16
Pause Tx Frames: 0
Deferred Tx Frames: 0
Collisions: 0
Single Collision Tx Frames: 0
Multiple Collision Tx Frames: 0
Excessive Collisions: 0
Late Collisions: 0
Tx Underrun: 0
Carrier Sense Errors: 0
Tx Octets: 39372
Rx + Tx 64 Octet Frames: 0
Rx + Tx 65-127 Octet Frames: 16
Rx + Tx 128-255 Octet Frames: 0
Rx + Tx 256-511 Octet Frames: 110
Rx + Tx 512-1023 Octet Frames: 0
Rx + Tx 1024-Up Octet Frames: 0
Net Octets: 39372
Rx Start of Frame Overruns: 0
Rx Middle of Frame Overruns: 0
Rx DMA Overruns: 0
Rx DMA chan 0: head_enqueue: 1
Rx DMA chan 0: tail_enqueue: 127
Rx DMA chan 0: pad_enqueue: 0
Rx DMA chan 0: misqueued: 0
Rx DMA chan 0: desc_alloc_fail: 0
Rx DMA chan 0: pad_alloc_fail: 0
Rx DMA chan 0: runt_receive_buf: 0
Rx DMA chan 0: runt_transmit_bu: 0
Rx DMA chan 0: empty_dequeue: 0
Rx DMA chan 0: busy_dequeue: 0
Rx DMA chan 0: good_dequeue: 0
Rx DMA chan 0: requeue: 0
Rx DMA chan 0: teardown_dequeue: 0
Tx DMA chan 0: head_enqueue: 126
Tx DMA chan 0: tail_enqueue: 0
Tx DMA chan 0: pad_enqueue: 0
Tx DMA chan 0: misqueued: 0
Tx DMA chan 0: desc_alloc_fail: 0
Tx DMA chan 0: pad_alloc_fail: 0
Tx DMA chan 0: runt_receive_buf: 0
Tx DMA chan 0: runt_transmit_bu: 0
Tx DMA chan 0: empty_dequeue: 126
Tx DMA chan 0: busy_dequeue: 0
Tx DMA chan 0: good_dequeue: 126
Tx DMA chan 0: requeue: 0
Tx DMA chan 0: teardown_dequeue: 0
This is .dts piece:
&mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; status = "okay"; }; &davinci_mdio { pinctrl-names = "default", "sleep"; compatible = "ti,cpsw-mdio","ti,davinci_mdio"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_75_NS>; ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_75_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; ti,min-output-impedance; status = "okay"; }; &cpsw_emac0 { phy_id = <&davinci_mdio>, <0>; phy-mode = "rgmii-txid"; }; &cpsw_emac1 { phy_id = <&davinci_mdio>, <0>; phy-mode = "rgmii-txid"; };
Link to tida schematic (used PHYs connections and DP83867 modes configs): http://www.ti.com/lit/df/tidrdr0a/tidrdr0a.pdf
Full .dts file:
/*
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
#include "am33xx.dtsi"
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/arm/sw_c100_am335x_pinmux.h>
#include <dt-bindings/net/ti-dp83867.h>
/ {
model = "SW-C100";
compatible = "ti,am33xx";
chosen {
stdout-path = &uart1;
tick-timer = &timer2;
};
cpus {
cpu@0 {
cpu0-supply = <&vdd1_reg>;
};
};
memory@80000000 {
device_type = "memory";
reg = <0x80000000 0x10000000>; /* 256 MB */
};
vbat: fixedregulator0 {
compatible = "regulator-fixed";
regulator-name = "vbat";
regulator-min-microvolt = <15000000>;
regulator-max-microvolt = <15000000>;
regulator-always-on;
regulator-boot-on;
};
leds {
pinctrl-names = "default";
pinctrl-0 = <&user_leds_s0>;
compatible = "gpio-leds";
led1 {
label = "evmsk:green:heartbeat";
gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
led2 {
label = "evmsk:green:mmc0";
gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "mmc0";
default-state = "off";
};
};
gpio_buttons: gpio_buttons0 {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
switch1 {
label = "button0"; // S3 GPIO_KEY1
linux,code = <0x100>;
gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
};
switch2 {
label = "button1";
linux,code = <0x101>; // S2 GPIO_KEY2
gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
};
switch3 {
label = "button2"; // S4 GPIO_CASE_OPEN_CLOSE
linux,code = <0x102>;
gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
};
};
};
&am33xx_pinmux {
pinctrl-names = "default";
pinctrl-0 = <&oeta_pins>;
ddr3_vtt_toggle: ddr3_vtt_toggle {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_USB0_DRVVBUS, (PIN_OUTPUT | MUX_MODE7)) /* AM33XX_IOPAD.gpio0_18 */
>;
};
user_leds_s0: user_leds_s0 {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_GPMC_AD11, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad11, AVR220_LED0 */
AM33XX_IOPAD(PIN_GPMC_AD10, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad10, AVR220_LED1 */
>;
};
i2c0_pins: pinmux_i2c0_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_I2C0_SDA, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */
AM33XX_IOPAD(PIN_I2C0_SCL, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */
>;
};
uart1_pins: pinmux_uart1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_UART1_RXD, PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */
AM33XX_IOPAD(PIN_UART1_TXD, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
>;
};
mmc1_pins: pinmux_mmc1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_MMC0_DAT3, (PIN_INPUT_PULLUP | MUX_MODE0))
AM33XX_IOPAD(PIN_MMC0_DAT2, (PIN_INPUT_PULLUP | MUX_MODE0))
AM33XX_IOPAD(PIN_MMC0_DAT1, (PIN_INPUT_PULLUP | MUX_MODE0))
AM33XX_IOPAD(PIN_MMC0_DAT0, (PIN_INPUT_PULLUP | MUX_MODE0))
AM33XX_IOPAD(PIN_MMC0_CMD, (PIN_INPUT_PULLUP | MUX_MODE0))
AM33XX_IOPAD(PIN_MMC0_CLK, (PIN_INPUT_PULLUP | MUX_MODE0))
>;
};
mmc2_pins: pinmux_mmc2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_GPMC_CSN1, (PIN_INPUT_PULLUP | MUX_MODE2)) /* gpmc_csn1.mmc1_clk */
AM33XX_IOPAD(PIN_GPMC_CSN2, (PIN_INPUT_PULLUP | MUX_MODE2)) /* gpmc_csn2.mmc1_cmd */
AM33XX_IOPAD(PIN_GPMC_AD0, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad0.mmc1_dat0 */
AM33XX_IOPAD(PIN_GPMC_AD1, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad1.mmc1_dat1 */
AM33XX_IOPAD(PIN_GPMC_AD2, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad2.mmc1_dat2 */
AM33XX_IOPAD(PIN_GPMC_AD3, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad3.mmc1_dat3 */
AM33XX_IOPAD(PIN_GPMC_AD4, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad4.mmc1_dat4 */
AM33XX_IOPAD(PIN_GPMC_AD5, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad5.mmc1_dat5 */
AM33XX_IOPAD(PIN_GPMC_AD6, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad6.mmc1_dat6 */
AM33XX_IOPAD(PIN_GPMC_AD7, (PIN_INPUT_PULLUP | MUX_MODE1)) /* gpmc_ad7.mmc1_dat7 */
>;
};
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(PIN_GMII1_TXCLK, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
AM33XX_IOPAD(PIN_GMII1_TXD0, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
AM33XX_IOPAD(PIN_GMII1_TXD1, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
AM33XX_IOPAD(PIN_GMII1_TXD2, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
AM33XX_IOPAD(PIN_GMII1_TXD3, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
AM33XX_IOPAD(PIN_GMII1_TXEN, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
AM33XX_IOPAD(PIN_GMII1_RXCLK, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rgmii1_rclk */
AM33XX_IOPAD(PIN_GMII1_RXD0, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */
AM33XX_IOPAD(PIN_GMII1_RXD1, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */
AM33XX_IOPAD(PIN_GMII1_RXD2, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd2.rgmii1_rd2 */
AM33XX_IOPAD(PIN_GMII1_RXD3, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd3.rgmii1_rd3 */
AM33XX_IOPAD(PIN_GMII1_RXDV, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */
/* Slave 2 */
AM33XX_IOPAD(PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A1, PIN_INPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A3, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A6, PIN_OUTPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A7, PIN_INPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A8, PIN_INPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A9, PIN_INPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A10, PIN_INPUT_PULLDOWN | MUX_MODE2)
AM33XX_IOPAD(PIN_GPMC_A11, PIN_INPUT_PULLDOWN | MUX_MODE2)
>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(PIN_GMII1_TXEN, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXDV, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_TXD3, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_TXD2, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_TXD1, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_TXD0, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_TXCLK, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXCLK, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXD3, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXD2, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXD1, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GMII1_RXD0, PIN_INPUT_PULLDOWN | MUX_MODE7)
/* Slave 2 reset value*/
AM33XX_IOPAD(PIN_GPMC_A0, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A1, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A2, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A3, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A4, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A5, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A6, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A7, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A8, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A9, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A10, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_GPMC_A11, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
AM33XX_IOPAD(PIN_MDIO_DATA, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(PIN_MDIO_CLK, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};
davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
AM33XX_IOPAD(PIN_MDIO_DATA, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(PIN_MDIO_CLK, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
oeta_pins: pinmux_oeta_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(PIN_GPMC_AD9, PIN_OUTPUT_PULLDOWN | MUX_MODE7)
>;
};
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
status = "okay";
};
&mmc1 { // SD Card
vmmc-supply = <&vmmc_reg>;
bus-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
broken-cd;
status = "okay";
};
&mmc2 { // MMC FLASH NAND
vmmc-supply = <&vmmc_reg>;
ti,non-removable;
broken-cd;
pinctrl-names = "default";
pinctrl-0 = <&mmc2_pins>;
bus-width = <8>;
min-frequency = <26000000>;
max-frequency = <52000000>;
status = "okay";
};
&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "okay";
clock-frequency = <400000>;
tps: tps@2d {
reg = <0x2d>;
};
};
#include "tps65910.dtsi"
&tps {
vcc1-supply = <&vbat>;
vcc2-supply = <&vbat>;
vcc3-supply = <&vbat>;
vcc4-supply = <&vbat>;
vcc5-supply = <&vbat>;
vcc6-supply = <&vbat>;
vcc7-supply = <&vbat>;
vccio-supply = <&vbat>;
regulators {
vrtc_reg: regulator@0 {
regulator-boot-on;
regulator-always-on;
};
vio_reg: regulator@1 {
regulator-boot-on;
regulator-always-on;
};
vdd1_reg: regulator@2 {
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
regulator-name = "vdd_mpu";
regulator-min-microvolt = <912500>;
regulator-max-microvolt = <1351500>;
regulator-boot-on;
regulator-always-on;
};
vdd2_reg: regulator@3 {
/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
regulator-name = "vdd_core";
regulator-min-microvolt = <912500>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};
vdd3_reg: regulator@4 {
regulator-boot-on;
regulator-always-on;
};
vdig1_reg: regulator@5 {
regulator-boot-on;
regulator-always-on;
};
vdig2_reg: regulator@6 {
regulator-boot-on;
regulator-always-on;
};
vpll_reg: regulator@7 {
regulator-boot-on;
regulator-always-on;
};
vdac_reg: regulator@8 {
regulator-boot-on;
regulator-always-on;
};
vaux1_reg: regulator@9 {
regulator-boot-on;
regulator-always-on;
};
vaux2_reg: regulator@10 {
regulator-boot-on;
regulator-always-on;
};
vaux33_reg: regulator@11 {
regulator-boot-on;
regulator-always-on;
};
vmmc_reg: regulator@12 {
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};
&gpio0 {
ti,gpio-always-on;
ti,no-reset-on-init;
};
&gpio1 {
ti,gpio-always-on;
ti,no-reset-on-init;
};
&gpio2 {
ti,gpio-always-on;
ti,no-reset-on-init;
};
&gpio3 {
ti,gpio-always-on;
ti,no-reset-on-init;
};
&sham {
status = "okay";
};
&aes {
status = "okay";
};
&sgx {
status = "okay";
};
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb1_phy {
status = "okay";
};
&usb1 {
status = "okay";
dr_mode = "host";
};
&cppi41dma {
status = "okay";
};
&wkup_m3_ipc {
ti,needs-vtt-toggle;
ti,vtt-gpio-pin = <7>;
ti,scale-data-fw = "am335x-evm-scale-data.bin";
};
&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
compatible = "ti,cpsw-mdio","ti,davinci_mdio";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_75_NS>;
ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_75_NS>;
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
ti,min-output-impedance;
status = "okay";
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "rgmii-txid";
};
&cpsw_emac1 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "rgmii-txid";
};
//compatible = "ethernet-phy-ieee802.3-c22";
&pruss_soc_bus {
status = "okay";
pruss: pruss@4a300000 {
status = "okay";
pru0: pru@4a334000 {
status = "okay";
};
pru1: pru@4a338000 {
status = "okay";
};
};
};
Full kernel log:
Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.9.49-gc2eed4ada2 (ildar@irsu) (gcc version 6.2.0 (GCC) ) #2 PREEMPT Fri Oct 20 18:28:33 +07 2017 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt:Machine model: SW-C100 [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 48 MiB at 0x8a800000 [ 0.000000] Memory policy: Data cache writeback [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] AM335X ES2.1 (neon) [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64960 [ 0.000000] Kernel command line: console=ttyS1,115200n8 root=PARTUUID=10decebc-02 rw rootfstype=ext4 rootwait [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Memory: 189780K/262144K available (7168K kernel code, 424K rwdata, 2372K rodata, 1024K init, 8669K bss, 23212K reserved, 49152K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xd0800000 - 0xff800000 ( 752 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0800000 (8160 kB) [ 0.000000] .init : 0xc0b00000 - 0xc0c00000 (1024 kB) [ 0.000000] .data : 0xc0c00000 - 0xc0c6a278 ( 425 kB) [ 0.000000] .bss : 0xc0c6a278 - 0xc14e16a4 (8670 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Running RCU self tests [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU debugfs-based tracing is enabled. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz [ 0.000021] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.000052] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000115] OMAP clocksource: timer1 at 24000000 Hz [ 0.000357] clocksource_probe: no matching clocksources found [ 0.001133] Console: colour dummy device 80x30 [ 0.001229] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.001244] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.001256] ... MAX_LOCK_DEPTH: 48 [ 0.001267] ... MAX_LOCKDEP_KEYS: 8191 [ 0.001278] ... CLASSHASH_SIZE: 4096 [ 0.001289] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.001300] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.001310] ... CHAINHASH_SIZE: 32768 [ 0.001321] memory used by lock dependency info: 5167 kB [ 0.001333] per task-struct memory footprint: 1536 bytes [ 0.052104] Calibrating delay loop... 597.60 BogoMIPS (lpj=2988032) [ 0.167645] pid_max: default: 32768 minimum: 301 [ 0.169007] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.169048] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.179417] CPU: Testing write buffer coherency: ok [ 0.182780] Setting up static identity map for 0x80100000 - 0x80100060 [ 0.199427] EFI services will not be available. [ 0.206757] devtmpfs: initialized [ 0.543414] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 0.611810] DMA-API: preallocated 4096 debug entries [ 0.611847] DMA-API: debugging enabled by kernel config [ 0.639853] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.639991] futex hash table entries: 256 (order: 1, 11264 bytes) [ 0.645667] pinctrl core: initialized pinctrl subsystem [ 0.664611] NET: Registered protocol family 16 [ 0.676005] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.766642] omap_hwmod: debugss: _wait_target_disable failed [ 0.867957] cpuidle: using governor ladder [ 0.897690] cpuidle: using governor menu [ 1.001876] OMAP GPIO hardware version 0.1 [ 1.248955] No ATAGs? [ 1.248995] hw-breakpoint: debug architecture 0x4 unsupported. [ 1.561743] edma 49000000.edma: TI EDMA DMA engine driver [ 1.581911] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe [ 1.583132] pps_core: LinuxPPS API ver. 1 registered [ 1.583154] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 1.583520] PTP clock support registered [ 1.583825] EDAC MC: Ver: 3.0.0 [ 1.600463] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400 [ 1.620320] clocksource: Switched to clocksource timer1 [ 1.807466] NET: Registered protocol family 2 [ 1.814743] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [ 1.814882] TCP bind hash table entries: 2048 (order: 4, 73728 bytes) [ 1.816147] TCP: Hash tables configured (established 2048 bind 2048) [ 1.816780] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 1.817170] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 1.819973] NET: Registered protocol family 1 [ 1.826221] RPC: Registered named UNIX socket transport module. [ 1.826260] RPC: Registered udp transport module. [ 1.826277] RPC: Registered tcp transport module. [ 1.826292] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.832844] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available [ 1.869079] workingset: timestamp_bits=14 max_order=16 bucket_order=2 [ 2.156260] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 2.186469] NFS: Registering the id_resolver key type [ 2.187089] Key type id_resolver registered [ 2.187116] Key type id_legacy registered [ 2.219536] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) [ 2.219806] io scheduler noop registered [ 2.219830] io scheduler deadline registered [ 2.226426] io scheduler cfq registered (default) [ 2.254095] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568 [ 2.550769] random: fast init done [ 3.392169] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled [ 3.468103] console [ttyS1] disabled [ 3.469081] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 158, base_baud = 3000000) is a 8250 [ 4.095120] console [ttyS1] enabled [ 4.116161] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 [ 4.328253] brd: module loaded [ 4.455824] loop: module loaded [ 4.482862] libphy: Fixed MDIO Bus: probed [ 4.570438] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 [ 4.576600] davinci_mdio 4a101000.mdio: detected phy mask fffefffe [ 4.598556] libphy: 4a101000.mdio: probed [ 4.602910] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver TI DP83867 [ 4.612643] davinci_mdio 4a101000.mdio: phy[16]: device 4a101000.mdio:10, driver TI DP83867 [ 4.625478] cpsw 4a100000.ethernet: Detected MACID = 50:f1:4a:0b:83:c3 [ 4.634173] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies) [ 4.666028] i2c /dev entries driver [ 4.687565] cpuidle: enable-method property 'ti,am3352' found operations [ 4.732543] ledtrig-cpu: registered to indicate activity on CPUs [ 4.756929] NET: Registered protocol family 10 [ 4.774524] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 4.793914] NET: Registered protocol family 17 [ 4.799802] 8021q: 802.1Q VLAN Support v1.8 [ 4.805136] Key type dns_resolver registered [ 4.809816] omap_voltage_late_init: Voltage driver support not added [ 4.833394] kmemleak: Kernel memory leak detector initialized [ 4.841599] kmemleak: Automatic memory scanning thread started [ 4.962719] tps65910 0-002d: No interrupt support, no core IRQ [ 4.989412] vrtc: supplied by vbat [ 5.005093] vio: supplied by vbat [ 5.016573] vdd1: supplied by vbat [ 5.028845] vdd2: supplied by vbat [ 5.047695] vdig1: supplied by vbat [ 5.059244] vdig2: supplied by vbat [ 5.071189] vpll: supplied by vbat [ 5.082373] vdac: supplied by vbat [ 5.094732] vaux1: supplied by vbat [ 5.105971] vaux2: supplied by vbat [ 5.117705] vaux33: supplied by vbat [ 5.129355] vmmc: supplied by vbat [ 5.141988] vbb: supplied by vbat [ 5.157432] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [ 5.325698] hctosys: unable to open rtc device (rtc0) [ 5.347738] Waiting for root device PARTUUID=10decebc-02... [ 5.386080] mmc0: host does not support reading read-only switch, assuming write-enable [ 5.398428] mmc0: new high speed SDHC card at address aaaa [ 5.405454] mmc1: new high speed MMC card at address 0001 [ 5.433133] mmcblk0: mmc0:aaaa SL16G 14.8 GiB [ 5.441109] mmcblk1: mmc1:0001 MMC04G 3.60 GiB [ 5.451656] mmcblk1boot0: mmc1:0001 MMC04G partition 1 16.0 MiB [ 5.468290] mmcblk1boot1: mmc1:0001 MMC04G partition 2 16.0 MiB [ 5.476155] mmcblk0: p1 p2 [ 5.704684] EXT4-fs (mmcblk0p2): recovery complete [ 5.716680] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 5.725857] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 5.752636] devtmpfs: mounted [ 5.762097] Freeing unused kernel memory: 1024K INIT: version 2.88 booting Error opening /dev/fb0: No such file or directory Starting udev [ 10.151821] udevd[111]: starting version 3.2 [ 10.298348] udevd[112]: starting eudev-3.2 [ 12.739674] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) hwclock: can't open '/dev/misc/rtc': No such file or directory Fri Oct 20 12:15:56 UTC 2017 hwclock: can't open '/dev/misc/rtc': No such file or directory INIT: Entering runlevel: 5 Configuring network interfaces... [ 17.639502] net eth0: initializing cpsw version 1.12 (0) [ 17.674958] net eth0: initialized cpsw ale version 1.4 [ 17.680158] net eth0: ALE Table size 1024 [ 17.705193] net eth0: phy "4a101000.mdio:00" not found on slave 0, err -19 [ 17.714481] TI DP83867 4a101000.mdio:00: attached PHY driver [TI DP83867] (mii_bus:phy_addr=4a101000.mdio:00, irq=-1) [ 17.768872] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 17.776365] 8021q: adding VLAN 0 to HW filter on device eth0 udhcpc (v1.24.1) started Sending discover... [ 19.841857] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx [ 19.852736] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Sending discover... Sending discover... No lease, forking to background done. Starting system message bus: dbus. Starting OpenBSD Secure Shell server: sshd done. Starting rpcbind daemon...done. starting statd: done Starting atd: OK hwclock: can't open '/dev/misc/rtc': No such file or directory exportfs: can't open /etc/exports for reading NFS daemon support not enabled in kernel Starting system log daemon...0 Starting kernel log daemon...0 Starting crond: OK
Kernel sources patch (with thread https://e2e.ti.com/support/arm/sitara_arm/f/791/p/584221/2146292):
diff a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index df43cf8b65f..6688fc242a2 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -23,7 +23,7 @@
#include <dt-bindings/net/ti-dp83867.h>
#define DP83867_PHY_ID 0x2000a231
-#define DP83867_DEVADDR 0x1f
+#define DP83867_DEVADDR 0x00
#define MII_DP83867_PHYCTRL 0x10
#define MII_DP83867_MICR 0x12
Kernel config: myboard-kernel-configs-fragments.cfg.txt
I will be grateful for any help.
Thanks!