This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA821U: Serdes output clock to support PCIe

Part Number: DRA821U
Other Parts Discussed in Thread: DRA821, TIDEP-01022, TDA4VL, TDA4VH, DRA829, AM67

Tool/software:

Hi Team,

We are working on DRA821U CPU with Linux SDK_09.02. We are using serdes lanes0,1 as PCIe root complex, so we need to configure the serdes clock pins as output.
Kindly share the necessary changes to achieve this.

Regards,

Nikhil K

  • Hi Nikhil,

    If the intent is to use the reference clock coming from the SERDES module on the SoC to drive the clock on the PCIe connector, please reference this FAQ: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1316211/faq-tda4vl-q1-j721s2xsomxevm-routing-pcie-reference-clock-externally 

    FAQ is mainly for J721S2, but the SERDES IP should be similar between DRA821 and J721S2 so the same registers programming to the clock should apply.

    Also, is this a custom board, or TI EVM board?

    Regards,

    Takuma

  • Hi Takuma,

    As we observed the given link suggesting to configure clock ouput on PCIE_REFCLK1_P/N_OUT pins and not on SERDES0_REFCLK_P/N pins.

    We have the similar HW configurations as TIDEP-01022 but there is no sdk available for J7VCL_EVM_200110.

    Kindly guide us to configure clock ouput on SERDES0_REFCLK_P/N.

    Regards,

    Nikhil K

  • Hi Takuma,

    Also we are observing below mentioned error prints on debug, is this related? since k3_clks are used by pcie_rc controller

    [    0.115938] ti-sci-clk 44083000.system-controller:clock-controller: recalc-rate failed for dev=175, clk=1, ret=-19
    [    3.468336] ti-sci-clk 44083000.system-controller:clock-controller: is_prepared failed for dev=175, clk=1, ret=-19

    Regards,
    Nikhil K

  • Hi Nikhil,

    It is recommended to use PCIE_REFCLK1_P/N_OUT instead of SERDES0_REFCLK_P/N for PCIe reference clock, mainly because of errata i2237: https://www.ti.com/lit/er/sprz491d/sprz491d.pdf

    However, assuming the workarounds are applied, in software the clocks are selected in device tree in this node: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi?h=ti-linux-6.1.y#n676

    For SERDES clock, SERDES must get initialized correctly for it to send a clock unlike an external clock generator that generates a 100MHz regardless of software. So, could you post the full "dmesg" logs so that I can review if there are issues with module/clock initialization?

    Regards,

    Takuma

  • Hi Takuma,

    In DRA821 processor there is no PCIE_REFCLK1_P/N_OUT pins present, so we configured SERDES0_REFCLK_P/N pin as ouput.

    We will go through the errata workarounds and SW worarounds shared, also find the dmesg log in for review.

    dmesg
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd080]
    [    0.000000] Linux version 6.1.80-ti-g1c154b1fe4c4 (user@user) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #45 SMP PREEMPT Tue Jul 23 19:34:58 IST 2024
    [    0.000000] Machine model: Texas Instruments J7200 EVM
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a47fffff]
    [    0.000000]   node   0: [mem 0x00000000a4800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fba00000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.4
    [    0.000000] percpu: Embedded 20 pages/cpu s41064 r8192 d32664 u81920
    [    0.000000] pcpu-alloc: s41064 r8192 d32664 u81920 alloc=20*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Detected PIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: detected: Spectre-v3a
    [    0.000000] CPU features: detected: Spectre-BHB
    [    0.000000] CPU features: detected: ARM erratum 1742098
    [    0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 root=PARTUUID=576af405-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1905848K/2097152K available (11968K kernel code, 1272K rwdata, 3996K rodata, 2048K init, 440K bss, 158536K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] 	Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 960 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: gic_handle_irq
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001900000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000000] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.000171] Console: colour dummy device 80x25
    [    0.000199] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.000205] pid_max: default: 32768 minimum: 301
    [    0.000227] LSM: Security Framework initializing
    [    0.000291] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.000303] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.001149] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.001154] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.001200] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.001202] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.001297] rcu: Hierarchical SRCU implementation.
    [    0.001300] rcu: 	Max phase no-delay instances is 1000.
    [    0.001478] Platform MSI: msi-controller@1820000 domain created
    [    0.001585] PCI/MSI: /bus@100000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.001698] EFI services will not be available.
    [    0.001813] smp: Bringing up secondary CPUs ...
    [    0.010347] Detected PIPT I-cache on CPU1
    [    0.010416] GICv3: CPU1: found redistributor 1 region 0:0x0000000001920000
    [    0.010431] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.010465] CPU1: Booted secondary processor 0x0000000001 [0x411fd080]
    [    0.010517] smp: Brought up 1 node, 2 CPUs
    [    0.010522] SMP: Total of 2 processors activated.
    [    0.010525] CPU features: detected: 32-bit EL0 Support
    [    0.010528] CPU features: detected: CRC32 instructions
    [    0.010557] CPU: All CPU(s) started at EL2
    [    0.010559] alternatives: applying system-wide alternatives
    [    0.011469] devtmpfs: initialized
    [    0.016251] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.016266] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.017012] pinctrl core: initialized pinctrl subsystem
    [    0.017332] DMI not present or invalid.
    [    0.017667] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.018287] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.018384] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.018475] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.018516] audit: initializing netlink subsys (disabled)
    [    0.018605] audit: type=2000 audit(0.016:1): state=initialized audit_enabled=0 res=1
    [    0.018810] thermal_sys: Registered thermal governor 'step_wise'
    [    0.018814] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.018836] cpuidle: using governor menu
    [    0.018910] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.018943] ASID allocator initialised with 65536 entries
    [    0.025215] platform a40000.pinctrl: Fixed dependency cycle(s) with /bus@100000/pinctrl@a40000/mcu-cpsw-cpts
    [    0.025994] KASLR disabled due to lack of seed
    [    0.029156] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.029161] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.029165] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.029167] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.029169] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.029171] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.029173] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.029175] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    0.029963] k3-chipinfo 43000014.chipid: Family:J7200 rev:SR2.0 JTAGID[0x1bb6d02f] Detected
    [    0.031006] iommu: Default domain type: Translated 
    [    0.031011] iommu: DMA domain TLB invalidation policy: strict mode 
    [    0.031142] SCSI subsystem initialized
    [    0.031226] libata version 3.00 loaded.
    [    0.031319] usbcore: registered new interface driver usbfs
    [    0.031334] usbcore: registered new interface driver hub
    [    0.031346] usbcore: registered new device driver usb
    [    0.031555] pps_core: LinuxPPS API ver. 1 registered
    [    0.031558] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.031564] PTP clock support registered
    [    0.031630] EDAC MC: Ver: 3.0.0
    [    0.032133] FPGA manager framework
    [    0.032172] Advanced Linux Sound Architecture Driver Initialized.
    [    0.032600] clocksource: Switched to clocksource arch_sys_counter
    [    0.032732] VFS: Disk quotas dquot_6.6.0
    [    0.032753] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.035688] NET: Registered PF_INET protocol family
    [    0.035975] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.037014] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.037033] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.037043] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.037121] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)
    [    0.037686] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.037829] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.037863] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.037977] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.038251] RPC: Registered named UNIX socket transport module.
    [    0.038256] RPC: Registered udp transport module.
    [    0.038258] RPC: Registered tcp transport module.
    [    0.038260] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.038264] NET: Registered PF_XDP protocol family
    [    0.038273] PCI: CLS 0 bytes, default 64
    [    0.038701] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available
    [    0.039443] Initialise system trusted keyrings
    [    0.039582] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.041762] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.042068] NFS: Registering the id_resolver key type
    [    0.042089] Key type id_resolver registered
    [    0.042091] Key type id_legacy registered
    [    0.042117] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.042120] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.042133] jffs2: version 2.2. (NAND) \xc2\xa9 2001-2006 Red Hat, Inc.
    [    0.061499] Key type asymmetric registered
    [    0.061505] Asymmetric key parser 'x509' registered
    [    0.061543] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
    [    0.061637] io scheduler mq-deadline registered
    [    0.061640] io scheduler kyber registered
    [    0.063588] pinctrl-single 4301c000.pinctrl: 13 pins, size 52
    [    0.063724] pinctrl-single 4301c038.pinctrl: 2 pins, size 8
    [    0.063856] pinctrl-single 4301c068.pinctrl: 59 pins, size 236
    [    0.064009] pinctrl-single 4301c174.pinctrl: 8 pins, size 32
    [    0.064159] pinctrl-single 11c000.pinctrl: 67 pins, size 268
    [    0.064465] pinctrl-single 11c11c.pinctrl: 3 pins, size 12
    [    0.064978] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [    0.068335] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    0.073054] loop: module loaded
    [    0.073631] megasas: 07.719.03.00-rc1
    [    0.075456] tun: Universal TUN/TAP device driver, 1.6
    [    0.075858] VFIO - User Level meta-driver version: 0.3
    [    0.076203] usbcore: registered new interface driver usb-storage
    [    0.076487] i2c_dev: i2c /dev entries driver
    [    0.077104] sdhci: Secure Digital Host Controller Interface driver
    [    0.077108] sdhci: Copyright(c) Pierre Ossman
    [    0.077316] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.077599] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.077690] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.077833] usbcore: registered new interface driver usbhid
    [    0.077835] usbhid: USB HID core driver
    [    0.078352] optee: probing for conduit method.
    [    0.078371] optee: revision 4.1 (012cdca4)
    [    0.094802] optee: dynamic shared memory is enabled
    [    0.095028] optee: initialized driver
    [    0.096652] Initializing XFRM netlink socket
    [    0.096674] NET: Registered PF_PACKET protocol family
    [    0.096712] Key type dns_resolver registered
    [    0.096932] registered taskstats version 1
    [    0.096949] Loading compiled-in X.509 certificates
    [    0.101686] tlv71033: Bringing 1800000uV into 3300000-3300000uV
    [    0.103787] ti-sci 44083000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.2.4--v09.02.04 (Kool Koala)')
    [    0.116326] ti-sci-clk 44083000.system-controller:clock-controller: recalc-rate failed for dev=175, clk=1, ret=-19
    [    0.144838] pcf857x 0-0039: probed
    [    0.145022] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 400 kHz
    [    0.168783] sgtl5000 1-000a: sgtl5000 revision 0x11
    [    0.174335] omap_i2c 42120000.i2c: bus 1 rev0.12 at 400 kHz
    [    0.174944] omap_i2c 2000000.i2c: bus 2 rev0.12 at 400 kHz
    [    0.175399] omap_i2c 2010000.i2c: bus 3 rev0.12 at 400 kHz
    [    0.175549] ti-sci-intr 42200000.interrupt-controller: Interrupt Router 137 domain created
    [    0.175639] ti-sci-intr bus@100000:interrupt-controller@a00000: Interrupt Router 131 domain created
    [    0.175719] ti-sci-intr 310e0000.interrupt-controller: Interrupt Router 213 domain created
    [    0.175856] ti-sci-inta 33d00000.msi-controller: Interrupt Aggregator domain 209 created
    [    0.176122] 
                   -----------wiz
    
    [    0.178588] k3-ringacc 2b800000.ringacc: Ring Accelerator probed rings:286, gp-rings[96,32] sci-dev-id:235
    [    0.178596] k3-ringacc 2b800000.ringacc: dma-ring-reset-quirk: disabled
    [    0.178600] k3-ringacc 2b800000.ringacc: RA Proxy rev. 66349100, num_proxies:64
    [    0.180935] k3-ringacc 3c000000.ringacc: Ring Accelerator probed rings:1024, gp-rings[120,200] sci-dev-id:211
    [    0.180945] k3-ringacc 3c000000.ringacc: dma-ring-reset-quirk: disabled
    [    0.180947] k3-ringacc 3c000000.ringacc: RA Proxy rev. 66349100, num_proxies:64
    [    0.181486] 40a00000.serial: ttyS1 at MMIO 0x40a00000 (irq = 254, base_baud = 6000000) is a 8250
    [    0.182005] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 255, base_baud = 3000000) is a 8250
    [    1.583948] printk: console [ttyS2] enabled
    [    1.588607] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 256, base_baud = 3000000) is a 8250
    [    1.598537] davinci_mdio c000f00.mdio: Configuring MDIO in manual mode
    [    1.644604] davinci_mdio c000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.652829] mdio_bus c000f00.mdio:04: Fixed dependency cycle(s) with /bus@100000/ethernet@c000000/mdio@f00/ethernet-phy@4/vddio-regulator
    [    1.665516] vddio: Bringing 1500000uV into 1800000-1800000uV
    [    1.675309] mdio_bus c000f00.mdio:05: Fixed dependency cycle(s) with /bus@100000/ethernet@c000000/mdio@f00/ethernet-phy@5/vddio-regulator
    [    1.687980] vddio: Bringing 1500000uV into 1800000-1800000uV
    [    1.697201] davinci_mdio c000f00.mdio: phy[4]: device c000f00.mdio:04, driver Qualcomm Atheros AR8031/AR8033
    [    1.707017] davinci_mdio c000f00.mdio: phy[5]: device c000f00.mdio:05, driver Qualcomm Atheros AR8031/AR8033
    [    1.716846] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 5 quirks:00000000
    [    1.729648] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [    1.736771] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [    1.743047] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
    [    1.754068] am65-cpts 310d0000.cpts: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
    [    1.766242] mmc0: CQHCI version 5.10
    [    1.767123] mmc1: CQHCI version 5.10
    [    1.774306] gpio-444 (eth_reset_gpio): hogged as output/high
    [    1.807221] mmc0: SDHCI controller on 4f80000.mmc [4f80000.mmc] using ADMA 64-bit
    [    1.811816] mmc1: SDHCI controller on 4fb0000.mmc [4fb0000.mmc] using ADMA 64-bit
    [    1.856507] mmc1: new high speed SDHC card at address 5048
    [    1.862906] mmcblk1: mmc1:5048 SD32G 29.7 GiB 
    [    1.870576]  mmcblk1: p1 p2
    [    1.981967] 
                   -----------rtc------------------
    [    1.999323] mmc0: Command Queue Engine enabled
    [    2.003777] mmc0: new HS400 MMC card at address 0001
    [    2.009484] mmcblk0: mmc0:0001 DG4016 14.7 GiB 
    [    2.015466]  mmcblk0: p1 p2
    [    2.018790] mmcblk0boot0: mmc0:0001 DG4016 4.00 MiB 
    [    2.024642] mmcblk0boot1: mmc0:0001 DG4016 4.00 MiB 
    [    2.030271] mmcblk0rpmb: mmc0:0001 DG4016 4.00 MiB, chardev (238:0)
    [    2.097002] tps6594-rtc tps6594-rtc.4.auto: registered as rtc0
    [    2.104026] tps6594-rtc tps6594-rtc.4.auto: setting system clock to 2000-01-01T00:00:00 UTC (946684800)
    [    2.114069] omap-mailbox 31f80000.mailbox: omap mailbox rev 0x66fc8900
    [    2.120903] omap-mailbox 31f81000.mailbox: omap mailbox rev 0x66fc8900
    [    2.128498] j721e-pcie-host 2910000.pcie: host bridge /bus@100000/pcie@2910000 ranges:
    [    2.136434] j721e-pcie-host 2910000.pcie:       IO 0x0018001000..0x0018010fff -> 0x0018001000
    [    2.144950] j721e-pcie-host 2910000.pcie:      MEM 0x0018011000..0x001fffffff -> 0x0018011000
    [    2.153468] j721e-pcie-host 2910000.pcie:   IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000
    [    2.162290] 
                   -----enabling clock------------
    [    3.169302] j721e-pcie-host 2910000.pcie: PCI host bridge to bus 0000:00
    [    3.176003] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    3.181489] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x18001000-0x18010fff])
    [    3.190956] pci_bus 0000:00: root bus resource [mem 0x18011000-0x1fffffff]
    [    3.197873] pci 0000:00:00.0: [104c:b00f] type 01 class 0x060400
    [    3.204030] pci 0000:00:00.0: supports D1
    [    3.208045] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    3.213816] pci 0000:00:00.0: reg 0x224: [mem 0x00000000-0x003fffff 64bit]
    [    3.220720] pci 0000:00:00.0: VF(n) BAR0 space: [mem 0x00000000-0x00ffffff 64bit] (contains BAR0 for 4 VFs)
    [    3.232927] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    3.241114] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
    [    3.247773] pci 0000:00:00.0: BAR 7: assigned [mem 0x18400000-0x193fffff 64bit]
    [    3.255107] pci 0000:00:00.0: PCI bridge to [bus 01]
    [    3.260377] pcieport 0000:00:00.0: PME: Signaling with IRQ 520
    [    3.266448] pcieport 0000:00:00.0: AER: enabled with IRQ 520
    [    3.273751] ti-udma 285c0000.dma-controller: Channels: 26 (tchan: 13, rchan: 13, gp-rflow: 8)
    [    3.284835] ti-udma 31150000.dma-controller: Channels: 50 (tchan: 25, rchan: 25, gp-rflow: 8)
    [    3.299126] davinci_mdio c000f00.mdio: Configuring MDIO in manual mode
    [    3.344629] davinci_mdio c000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    3.358572] davinci_mdio c000f00.mdio: phy[4]: device c000f00.mdio:04, driver Qualcomm Atheros AR8031/AR8033
    [    3.368422] davinci_mdio c000f00.mdio: phy[5]: device c000f00.mdio:05, driver Qualcomm Atheros AR8031/AR8033
    [    3.378283] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 5 quirks:00000000
    [    3.391240] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [    3.398401] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [    3.405624] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
    [    3.416347] am65-cpsw-nuss c000000.ethernet: set new flow-id-base 60
    [    3.437328] input: sgtl5000 Microphone Jack as /devices/platform/sound/sound/card0/input0
    [    3.446925] debugfs: Directory 'pd:240' with parent 'pm_genpd' already present!
    [    3.457206] ti-sci-clk 44083000.system-controller:clock-controller: is_prepared failed for dev=175, clk=1, ret=-19
    [    3.469107] ALSA device list:
    [    3.472088]   #0: sgtl5000
    [    3.533060] EXT4-fs (mmcblk1p2): recovery complete
    [    3.542453] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: none.
    [    3.551021] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.558323] devtmpfs: mounted
    [    3.562698] Freeing unused kernel memory: 2048K
    [    3.567340] Run /sbin/init as init process
    [    3.571431]   with arguments:
    [    3.571433]     /sbin/init
    [    3.571434]   with environment:
    [    3.571436]     HOME=/
    [    3.571438]     TERM=linux
    [    3.953989] systemd[1]: System time before build time, advancing clock.
    [    4.033849] NET: Registered PF_INET6 protocol family
    [    4.039957] Segment Routing with IPv6
    [    4.043653] In-situ OAM (IOAM) with IPv6
    [    4.085840] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    4.117495] systemd[1]: Detected architecture arm64.
    [    4.186023] systemd[1]: Hostname set to <j7200-evm>.
    [    4.295024] systemd-sysv-generator[164]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    4.537987] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.596497] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.656997] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.712119] systemd[1]: Created slice Slice /system/getty.
    [    4.735057] systemd[1]: Created slice Slice /system/modprobe.
    [    4.759565] systemd[1]: Created slice Slice /system/serial-getty.
    [    4.783151] systemd[1]: Created slice User and Session Slice.
    [    4.805054] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.828983] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.853073] systemd[1]: Reached target Path Units.
    [    4.868788] systemd[1]: Reached target Remote File Systems.
    [    4.888754] systemd[1]: Reached target Slice Units.
    [    4.904773] systemd[1]: Reached target Swaps.
    [    4.964406] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    4.988874] systemd[1]: Reached target RPC Port Mapper.
    [    5.016269] systemd[1]: Listening on Process Core Dump Socket.
    [    5.037094] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.061531] systemd[1]: Listening on Journal Audit Socket.
    [    5.085311] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.109302] systemd[1]: Listening on Journal Socket.
    [    5.125455] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.149396] systemd[1]: Listening on udev Control Socket.
    [    5.169139] systemd[1]: Listening on udev Kernel Socket.
    [    5.189232] systemd[1]: Listening on User Database Manager Socket.
    [    5.241024] systemd[1]: Mounting Huge Pages File System...
    [    5.261766] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.313043] systemd[1]: Mounting Kernel Debug File System...
    [    5.328965] systemd[1]: Kernel Trace File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/tracing).
    [    5.348109] systemd[1]: Mounting Temporary Directory /tmp...
    [    5.370978] systemd[1]: Starting Create List of Static Device Nodes...
    [    5.397287] systemd[1]: Starting Load Kernel Module configfs...
    [    5.433221] systemd[1]: Starting Load Kernel Module drm...
    [    5.451734] systemd[1]: Starting Load Kernel Module fuse...
    [    5.468308] fuse: init (API version 7.37)
    [    5.497274] systemd[1]: Starting RPC Bind...
    [    5.512995] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    5.531666] systemd[1]: Starting Journal Service...
    [    5.585292] systemd[1]: Starting Load Kernel Modules...
    [    5.605066] systemd[1]: Starting Generate network units from Kernel command line...
    [    5.627864] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    5.649999] EXT4-fs (mmcblk1p2): re-mounted. Quota mode: none.
    [    5.681538] systemd[1]: Starting Coldplug All udev Devices...
    [    5.719473] systemd[1]: Started RPC Bind.
    [    5.741404] systemd[1]: Started Journal Service.
    [    6.051065] systemd-journald[178]: Received client request to flush runtime journal.
    [    6.242069] audit: type=1334 audit(1651167747.288:2): prog-id=5 op=LOAD
    [    6.249332] audit: type=1334 audit(1651167747.296:3): prog-id=6 op=LOAD
    [    6.692161] systemd-journald[178]: Oldest entry in /run/log/journal/b6bf30a532734aca92705d296022641d/system.journal is older than the configured file retention duration (1month), suggesting rotation.
    [    6.718921] CAN device driver interface
    [    6.726477] systemd-journald[178]: /run/log/journal/b6bf30a532734aca92705d296022641d/system.journal: Journal header limits reached or header out-of-date, rotating.
    [    6.753460] pcie_cadence: exports duplicate symbol cdns_pcie_deinit_phy (owned by kernel)
    [    6.762042] m_can_platform 2701000.can: m_can device registered (irq=604, version=32)
    [    6.772898] snd_soc_ti_sdma: exports duplicate symbol sdma_pcm_platform_register (owned by kernel)
    [    6.817962] m_can_platform 2731000.can: m_can device registered (irq=605, version=32)
    [    6.895594] pcie_cadence: exports duplicate symbol cdns_pcie_deinit_phy (owned by kernel)
    [    6.934867] random: crng init done
    [    6.942802] snd_soc_ti_sdma: exports duplicate symbol sdma_pcm_platform_register (owned by kernel)
    [    6.993318] Error: Driver 'sgtl5000' is already registered, aborting...
    [    7.022492] pcie_cadence: exports duplicate symbol cdns_pcie_deinit_phy (owned by kernel)
    [    7.030921] at24 1-0054: supply vcc not found, using dummy regulator
    [    7.098038] spidev: module is already loaded
    [    7.112581] at24 1-0054: 512 byte 24c04 EEPROM, writable, 16 bytes/write
    [    7.133488] pcie_cadence: exports duplicate symbol cdns_pcie_deinit_phy (owned by kernel)
    [    7.152546] Error: Driver 'sgtl5000' is already registered, aborting...
    [    7.242026] spidev: module is already loaded
    [    7.276261] genirq: Setting trigger mode 8 for irq 299 failed (gpio_irq_type+0x0/0x20)
    [    7.293241] typec_fusb302 0-0022: cannot request IRQ for GPIO Int_N, ret=-22
    [    7.329116] typec_fusb302: probe of 0-0022 failed with error -22
    [    7.400999] snd_soc_simple_card_utils: exports duplicate symbol asoc_graph_card_probe (owned by kernel)
    [    7.445354] audit: type=1334 audit(1721204218.000:4): prog-id=7 op=LOAD
    [    7.452325] audit: type=1334 audit(1721204218.004:5): prog-id=8 op=LOAD
    [    7.491187] snd_soc_simple_card_utils: exports duplicate symbol asoc_graph_card_probe (owned by kernel)
    [    8.215788] am65-cpsw-nuss c000000.ethernet eth1: PHY [c000f00.mdio:05] driver [Qualcomm Atheros AR8031/AR8033] (irq=POLL)
    [    8.230514] am65-cpsw-nuss c000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [    8.296147] m_can_platform 2701000.can main_mcan0: renamed from can0
    [    8.377575] m_can_platform 2731000.can main_mcan3: renamed from can1
    [    9.239629] audit: type=1334 audit(1721204219.792:6): prog-id=9 op=LOAD
    [    9.249829] audit: type=1334 audit(1721204219.800:7): prog-id=10 op=LOAD
    [    9.822467] audit: type=1006 audit(1721204220.376:8): pid=645 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=1 res=1
    [    9.835061] audit: type=1300 audit(1721204220.376:8): arch=c00000b7 syscall=64 success=yes exit=4 a0=8 a1=ffffe85ff3d8 a2=4 a3=ffffa43ad020 items=0 ppid=1 pid=645 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1 comm="(systemd)" exe="/lib/systemd/systemd" key=(null)
    [    9.861759] audit: type=1327 audit(1721204220.376:8): proctitle="(systemd)"
    [   10.114561] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: none.
    [   10.553906] audit: type=1006 audit(1721204221.108:9): pid=528 uid=0 old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=2 res=1
    [   16.401225] kauditd_printk_skb: 2 callbacks suppressed
    [   16.401232] audit: type=1006 audit(1721204226.956:10): pid=1063 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1
    [   16.419980] audit: type=1300 audit(1721204226.956:10): arch=c00000b7 syscall=64 success=yes exit=1 a0=8 a1=ffffe85ff3d8 a2=1 a3=ffffa43ad020 items=0 ppid=1 pid=1063 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="(systemd)" exe="/lib/systemd/systemd" key=(null)
    [   16.447114] audit: type=1327 audit(1721204226.956:10): proctitle="(systemd)"
    [   16.457502] audit: type=1334 audit(1721204227.012:11): prog-id=11 op=LOAD
    [   16.464308] audit: type=1300 audit(1721204227.012:11): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=ffffdf4baa30 a2=78 a3=0 items=0 ppid=1 pid=1063 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/lib/systemd/systemd" key=(null)
    [   16.489831] audit: type=1327 audit(1721204227.012:11): proctitle="(systemd)"
    [   16.496924] audit: type=1334 audit(1721204227.012:12): prog-id=11 op=UNLOAD
    [   16.503975] audit: type=1334 audit(1721204227.012:13): prog-id=12 op=LOAD
    [   16.510778] audit: type=1300 audit(1721204227.012:13): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=ffffdf4baad0 a2=78 a3=0 items=0 ppid=1 pid=1063 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/lib/systemd/systemd" key=(null)
    [   16.536244] audit: type=1327 audit(1721204227.012:13): proctitle="(systemd)"
    root@j7200-evm:~# 
    

    Regards,

    Nikhil K

  • Hi Nikhil,

    From logs, it looks like either SERDES is not outputting clock, or PERST (PCIe reset) signal is not being deasserted. Before going further down SERDES clock path, I would like to make sure PERST signal is being configured correctly.

    I'm assuming this is a custom board, but is the reset-gpios in device tree set to the pin connected to the PCIe connector?

    Regards,

    Takuma

  • Hi Takuma,

    Here are the observation from the testcases we did and queries we have.

    1. Reset gpio(PERST) is connected and it is deasserting properly

    2. We provided external 50ohm termination for SERDES0_REFCLK_P/N on destination side, is this fine or we need to enable internal 50ohm termination, if yes kindly share the procedure to enable internal 50ohm

    3. As you said earlier there is errata to SERDES0_REFCLK_P/N, are those workarounds mentioned  in errata document must to achive output clock in SERDES0_REFCLK_P/N.

    4. We observed there are some clocks related to serdes showing 0 value on debug terminal, are these clock neccessary.

    root@j7200-evm:~# cat /sys/kernel/debug/clk/clk_summary
                                     enable  prepare  protect                                duty  hardware
       clock                          count    count    count        rate   accuracy phase  cycle    enable
    -------------------------------------------------------------------------------------------------------
     5060000.serdes_refclk-rec            0        0        0           0          0     0  50000         N
     5060000.serdes_refclk-der            0        0        0           0          0     0  50000         N
        5060000.serdes_refclk-driver       0        0        0           0          0     0  50000         N
     clk:292:89                           1        1        0   100000000          0     0  50000         Y
        clk:292:85                        2        2        0   100000000          0     0  50000         Y
           bus@100000:wiz@5060000_refclk-dig       1        1        0   100000000          0     0  50000         Y
           bus@100000:wiz@5060000_pll1-refclk       0        0        0   100000000          0     0  50000         Y
           bus@100000:wiz@5060000_pll0-refclk       1        1        0   100000000          0     0  50000         Y

    5. Is there any changes required for PCIe node/serdes node in dts file for enabling serdes clock as output

    Regards,

    Nikhil K

  • Hi Nikhil,

    1. Reset gpio(PERST) is connected and it is deasserting properly

    Understood

    2. We provided external 50ohm termination for SERDES0_REFCLK_P/N on destination side, is this fine or we need to enable internal 50ohm termination, if yes kindly share the procedure to enable internal 50ohm

    External should be fine

    3. As you said earlier there is errata to SERDES0_REFCLK_P/N, are those workarounds mentioned  in errata document must to achive output clock in SERDES0_REFCLK_P/N.

    I would have to check on that. I assume connection would be very unstable, but should sometimes work. Looking at logs, I do not see any indication that SERDES clock was received by PCIe card. 

    4. We observed there are some clocks related to serdes showing 0 value on debug terminal, are these clock neccessary.

    Let me check those as well. Can I get back to you next week for this?

    5. Is there any changes required for PCIe node/serdes node in dts file for enabling serdes clock as output

    Default dts should be using internal reference clock for DRA821.

    On the other hand, I see a different errata, errata i2183, that affects both new and old DRA821. In the original post, it is mentioned only lanes 0 and 1 are used, but could you change in dts file such that all 4 lanes are configured for PCIe in serdes_ln_ctrl node?

    Regards,

    Takuma

  • Hi Takum,

    We have tried assigning all the lanes to PCIe in serdes_ln_ctrl node, still there is no clock output observed.

    Kindly update as soon as possible.

    Regards,

    Nikhil

  • Hi Takuma,

    In TRM its mentioned that eDP0 REFCLK is serdes output clock.

    Kindly guide us how to enable this clock output

    Regards,

    Nikhil

  • Hi Nikhil,

    eDP, USB, and PCIe all share the same SERDES module, and therefore, the same reference clock.

    Regards,

    Takuma

  • Hi Takum,

    Thanks for the reply,

    Is there any update on the enabling serdes output clock.

    Regards,

    Nikhil K

  • Hi Nikhil,

    There should not be any additional set up needed for enabling SERDES output clock... but let me see if I can test this out on a TI EVM.

    Could I get 1 week to come back to you? Since the TI EVM by default is using an external clock generator instead of the internal SERDES output clock for a reference clock, I will need some lab help to do some hardware changes. 

    Regards,

    Takuma

  • Hi Takuma,

    We have tested PCIe with External oscillator of 100MHz (by wiring to oscillator from another board) and observed PCIe is detecting.

    So kindly help us in configuring serdes clock as output as soon as possible, because we don't have any 100MHz clock-source in our custom carrier board

    Regards,

    Nikhil K

  • Hi Nikhil,

    Good to hear that we can be sure that the reference clock is the only missing component for getting PCIe to work!

    I had some hardware issues with one of my common processor board, so will need a bit more time to get the hardware configured so that SERDES reference clock is directly connected to PCIe connector. Thank you for your patience.

    Regards,

    Takuma

  • Hi Takuma,

    Any update on this case.

    Regards,

    Nikhil

  • Hi Nikhil,

    No updates yet. Unfortunately, I burnt some resistors while soldering, so I am ordering some new replacement parts that should come in later this week.

    However, what I imagine would need to happen would be to change the device tree to something similar as J784S4 EVM device tree in the serdes_wiz0 wrapper: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi?h=ti-linux-6.1.y#n638.

    You could try some experimentation related to clock while waiting.

    Regards,

    Takuma

  • Hi Takuma,

    Any update on this case.


    PCIe serdes is blocking us to go further. Kindly reply As soon as possible

    Regards,

    Nikhil K

  • Hi Nikhil,

    I made an initial attempt for enabling the internal reference clock for DRA821, but no luck. I will say that this query will take longer than expected - timeline could be in the range of 3 or more months collaborating with our internal development team. 

    Therefore, I would say there are two paths that you may take:

    1. Reference TI EVM board and design in an external clock generator
    2. Attempt to enable internal reference clock (may take a couple of months)

    Option 1 will be quite straight forward, since you have already verified with an external clock source that this works. TI makes all the EVM board design public, so you may reference that when adding the clock generator.

    Option 2, I can share some context on some difficulties and possible path forward:

    • For DRA821, we have not verified the usage of internal SERDES reference clock as a source for PCIe connector reference clock. Therefore, feasibility is still a bit questionable
    • DRA821 is unique and different from other SoCs in that it does not have a ACSPCIE clock buffer built into the SoC. DRA829, TDA4VH, TDA4VL which are all in the same family of SoC all has a different line that provides PCIe clock out of SERDES
    • AM67/J722S is an exception to this, and this is the only other SoC similar to DRA821 in that it directly connects SERDES_REFCLK to PCIe connector. There might be a device tree property that enables this internal clock on AM67: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-j722s.dtsi?h=ti-linux-6.1.y. Or there might be some extra hardware changes needed on DRA821 TI EVM that the AM67 TI EVM has. Both of which I am investigating, but again, may take a while.

    Regards,

    Takuma

  • Dear Takuma,

    Any update on this case

    Regards,

    Nikhil K

  • Hi Nikhil,

    Same status as before. As of now, we do not have a method for enabling internal SERDES_REFCLK to drive PCIe on DRA821. For quick development, I would recommend designing in an external reference clock.

    Otherwise, if you are to wait for a software fix the feasibility for this is still questionable so there is no guarantee that we will be able to create a software fix, and expect months worth of time if we were to implement the fix.

    Regards,

    Takuma

  • Hi Takuma,

    Please  provide the register details for serdes clock settings as implementation section of serdes not yet covered in TRM.

    Regards,

    Nikhil

  • Hi Nikhil,

    Unfortunately, we do not have those publicly available due to the IP being owned by a 3P. However, you may reference the driver from Cadence for the Torrent SerDes PHY here for an example of how the SerDes is programmed: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/phy/cadence/phy-cadence-torrent.c?h=ti-linux-6.6.y

    Regards,

    Takuma