[PATCH v2 0/5] powerpc, mpc83xx: add DM_ETH support
Rasmus Villemoes
rasmus.villemoes at prevas.dk
Tue Sep 22 16:34:36 CEST 2020
Hi Heiko
I'm struggling somewhat with getting our mpc8309-derived board converted
to DM_ETH. I just get
Net: No ethernet found.
where I used to get
Net: UEC0, UEC1, UEC2
and there's no errors or other diagnostics printed (I've also tried
adding #define DEBUG 1 to the .c files under drivers/net/qe/, still
nothing).
The board already used OF_CONTROL, so I've tried extending the
device-tree based partly on you changes for the km boards, partly from
our linux device tree - the two mostly agree:
@@ -25,6 +25,8 @@
i2c0 = &i2c0;
i2c1 = &i2c1;
spi0 = &spi0;
+ ethernet0 = &enet0;
+ ethernet2 = &enet2;
};
chosen {
@@ -315,6 +317,95 @@
clocks = <&clocks MPC83XX_CLK_SDHC>;
clock-names = "per";
};
+
+ ipic: pic at 700 {
+ compatible = "fsl,ipic";
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <2>;
+ reg = <0x700 0x100>;
+ device_type = "ipic";
+ };
};
-};
+ qe: qe at e0100000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ device_type = "qe";
+ compatible = "fsl,qe";
+ ranges = <0x0 0xe0100000 0x00100000>;
+ reg = <0xe0100000 0x480>;
+ brg-frequency = <0>;
+ bus-frequency = <396000000>;
+
+ muram at 10000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,qe-muram", "fsl,cpm-muram";
+ ranges = <0x0 0x00010000 0x00004000>;
+
+ data-only at 0 {
+ compatible = "fsl,qe-muram-data",
+ "fsl,cpm-muram-data";
+ reg = <0x0 0x4000>;
+ };
+ };
+
+ qeic: interrupt-controller at 80 {
+ interrupt-controller;
+ compatible = "fsl,qe-ic";
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ reg = <0x80 0x80>;
+ big-endian;
+ interrupts = <32 8 33 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ enet0: ethernet at 2000 {
+ device_type = "network";
+ compatible = "ucc_geth";
+ cell-index = <1>;
+ reg = <0x2000 0x200>;
+ interrupts = <32>;
+ interrupt-parent = <&qeic>;
+ local-mac-address = [ 00 00 00 00 00 00 ];
+ rx-clock-name = "clk9";
+ tx-clock-name = "clk10";
+ fixed-link = <1 1 100 0 0>;
+ };
+
+ enet2: ethernet at 2200 {
+ device_type = "network";
+ compatible = "ucc_geth";
+ cell-index = <3>;
+ reg = <0x2200 0x200>;
+ interrupts = <34>;
+ interrupt-parent = <&qeic>;
+ local-mac-address = [ 00 00 00 00 00 00 ];
+ rx-clock-name = "clk11";
+ tx-clock-name = "clk12";
+ phy-handle = <&phy1>;
+ phy-connection-type = "mii";
+ };
+
+ mdio0: mdio at 2120 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x2120 0x18>;
+ compatible = "fsl,ucc-mdio";
+
+ phy0: ethernet-phy at 00 {
+ reg = <0x01>;
+ device_type = "ethernet-phy";
+ };
+ phy1: ethernet-phy at 01 {
+ reg = <0x02>;
+ device_type = "ethernet-phy";
+ };
+ };
+
+
+ };
+
+};
The defconfig is updated with
CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
CONFIG_PHYLIB=y
CONFIG_PHY_MARVELL=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_DM_ETH_PHY=y
CONFIG_MII=y
+CONFIG_QE_UEC=y
and finally I've removed the UEC_ETH definitions from the board config
header:
-/*
- * Ethernet setup
- */
-
-/* enable uec ethernet */
-#define CONFIG_UEC_ETH
-
-/* eth1 */
-#define CONFIG_UEC_ETH1
-#define CONFIG_SYS_UEC1_UCC_NUM 0
-#define CONFIG_SYS_UEC1_RX_CLK QE_CLK9
-#define CONFIG_SYS_UEC1_TX_CLK QE_CLK10
-#define CONFIG_SYS_UEC1_ETH_TYPE FAST_ETH
-#define CONFIG_SYS_UEC1_PHY_ADDR 0x11
-#define CONFIG_SYS_UEC1_INTERFACE_TYPE PHY_INTERFACE_MODE_MII
-#define CONFIG_SYS_UEC1_INTERFACE_SPEED 100
-
-/* eth2 */
-#define CONFIG_UEC_ETH2
-#define CONFIG_SYS_UEC2_UCC_NUM 1
-#define CONFIG_SYS_UEC2_RX_CLK QE_CLK7
-#define CONFIG_SYS_UEC2_TX_CLK QE_CLK8
-#define CONFIG_SYS_UEC2_ETH_TYPE FAST_ETH
-#define CONFIG_SYS_UEC2_PHY_ADDR 0x13
-#define CONFIG_SYS_UEC2_INTERFACE_TYPE PHY_INTERFACE_MODE_MII
-#define CONFIG_SYS_UEC2_INTERFACE_SPEED 100
-
-/* eth3 */
-#define CONFIG_UEC_ETH3
-#define CONFIG_SYS_UEC3_UCC_NUM 2
-#define CONFIG_SYS_UEC3_RX_CLK QE_CLK11
-#define CONFIG_SYS_UEC3_TX_CLK QE_CLK12
-#define CONFIG_SYS_UEC3_ETH_TYPE FAST_ETH
-#define CONFIG_SYS_UEC3_PHY_ADDR 0x12
-#define CONFIG_SYS_UEC3_INTERFACE_TYPE PHY_INTERFACE_MODE_MII
-#define CONFIG_SYS_UEC3_INTERFACE_SPEED 100
-
I only define two ethernet devices in DT above - the third (middle one)
is used for ethercat and irrelevant in U-Boot.
I have not set CONFIG_PINCTRL{,_QE} since our qe_iop_conf_tab is just
const qe_iop_conf_t qe_iop_conf_tab[] = {
{0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
};
so config_qe_ioports() should be a no-op.
Can you see something obviously wrong with the above, and/or do you have
some hints as for what I can do to figure out why the drivers apparently
do not pick up the devices from DT? 'dm drivers' does list
ucc_geth 033 eth <none>
qe_uec_mdio 051 mdio <none>
Thanks,
Rasmus
More information about the U-Boot
mailing list