board: ti: am335x-ice: Configure the CDCE913 clock synthesizer
authorTero Kristo <t-kristo@ti.com>
Fri, 27 Sep 2019 16:14:29 +0000 (19:14 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 11 Oct 2019 17:32:39 +0000 (13:32 -0400)
AM335x-ICE boards contain the CDCE913 clock synthesizer, and their
reset crystal capacitance load value of 10pF is wrong leading into
lost packets in certain networking tests. Add DT data for this
device, and probe it from the board file to program the crystal
capacitance load value to 0pF to avoid any problems.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
arch/arm/dts/am335x-icev2-u-boot.dtsi [new file with mode: 0644]
board/ti/am335x/board.c
configs/am335x_evm_defconfig

diff --git a/arch/arm/dts/am335x-icev2-u-boot.dtsi b/arch/arm/dts/am335x-icev2-u-boot.dtsi
new file mode 100644 (file)
index 0000000..cc9569a
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
+ */
+/ {
+       xtal25mhz: xtal25mhz {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+};
+
+&i2c0 {
+       cdce913: cdce913@65 {
+               compatible = "ti,cdce913";
+               reg = <0x65>;
+               clocks = <&xtal25mhz>;
+               #clock-cells = <1>;
+               xtal-load-pf = <0>;
+       };
+};
index 7eaa6cd96d6017d8f765c57fb64b5531942204cc..499c872227b177b702527f0e006db57d67469261 100644 (file)
@@ -791,6 +791,7 @@ int board_init(void)
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
+       struct udevice *dev;
 #if !defined(CONFIG_SPL_BUILD)
        uint8_t mac_addr[6];
        uint32_t mac_hi, mac_lo;
 #if !defined(CONFIG_SPL_BUILD)
        uint8_t mac_addr[6];
        uint32_t mac_hi, mac_lo;
@@ -871,6 +872,9 @@ int board_late_init(void)
                        env_set("serial#", board_serial);
        }
 
                        env_set("serial#", board_serial);
        }
 
+       /* Just probe the potentially supported cdce913 device */
+       uclass_get_device(UCLASS_CLK, 0, &dev);
+
        return 0;
 }
 #endif
        return 0;
 }
 #endif
index 2aa9b65caf46b544514a46840a89be11d419a4b9..93a28b290b2c79beb6d9cec20773cb3ad4a5c4e6 100644 (file)
@@ -77,3 +77,5 @@ CONFIG_DYNAMIC_CRC_TABLE=y
 CONFIG_RSA=y
 CONFIG_LZO=y
 # CONFIG_OF_LIBFDT_OVERLAY is not set
 CONFIG_RSA=y
 CONFIG_LZO=y
 # CONFIG_OF_LIBFDT_OVERLAY is not set
+CONFIG_CLK=y
+CONFIG_CLK_CDCE9XX=y