Tool/software:
On our equipment, there is a phy chip (rmii) and a switch chip (rgmii). However, so far, only the phy chip has been successfully connected, while the switch has been unable to read/write to the registers. Here is the schematic diagram.
I made the following modifications in the k3-j722s-evm.dts and the davinci_mdio.c.
rmii1_pins_default: rmii1-default-pins { pinctrl-single,pins = < J722S_IOPAD(0x0130, PIN_INPUT, 1) /* (AG26) RGMII1_TXC.RMII1_CRS_DV */ J722S_IOPAD(0x0148, PIN_INPUT, 1) /* (AE27) RGMII1_RXC.RMII1_REF_CLK */ J722S_IOPAD(0x014c, PIN_INPUT, 1) /* (AC25) RGMII1_RD0.RMII1_RXD0 */ J722S_IOPAD(0x0150, PIN_INPUT, 1) /* (AD27) RGMII1_RD1.RMII1_RXD1 */ /* J722S_IOPAD(0x0144, PIN_INPUT, 1) /* (AD23) RGMII1_RX_CTL.RMII1_RX_ER */ J722S_IOPAD(0x0134, PIN_OUTPUT, 1) /* (AF27) RGMII1_TD0.RMII1_TXD0 */ J722S_IOPAD(0x0138, PIN_OUTPUT, 1) /* (AE23) RGMII1_TD1.RMII1_TXD1 */ J722S_IOPAD(0x012c, PIN_OUTPUT, 1) /* (AF25) RGMII1_TX_CTL.RMII1_TX_EN */ >; }; rgmii2_pins_default: rgmii2-default-pins { pinctrl-single,pins = < J722S_IOPAD(0x00f8, PIN_INPUT, 2) /* (AB24) VOUT0_HSYNC.RGMII2_RD0 */ J722S_IOPAD(0x00fc, PIN_INPUT, 2) /* (AC27) VOUT0_DE.RGMII2_RD1 */ J722S_IOPAD(0x0100, PIN_INPUT, 2) /* (AB23) VOUT0_VSYNC.RGMII2_RD2 */ J722S_IOPAD(0x0104, PIN_INPUT, 2) /* (AC26) VOUT0_PCLK.RGMII2_RD3 */ J722S_IOPAD(0x00f4, PIN_INPUT, 2) /* (AB27) VOUT0_DATA15.RGMII2_RXC */ J722S_IOPAD(0x00f0, PIN_INPUT, 2) /* (AB26) VOUT0_DATA14.RGMII2_RX_CTL */ J722S_IOPAD(0x00e0, PIN_OUTPUT, 2) /* (AA25) VOUT0_DATA10.RGMII2_TD0 */ J722S_IOPAD(0x00e4, PIN_OUTPUT, 2) /* (AB25) VOUT0_DATA11.RGMII2_TD1 */ J722S_IOPAD(0x00e8, PIN_OUTPUT, 2) /* (AA23) VOUT0_DATA12.RGMII2_TD2 */ J722S_IOPAD(0x00ec, PIN_OUTPUT, 2) /* (AA22) VOUT0_DATA13.RGMII2_TD3 */ J722S_IOPAD(0x00dc, PIN_OUTPUT, 2) /* (AA27) VOUT0_DATA9.RGMII2_TXC */ J722S_IOPAD(0x00d8, PIN_OUTPUT, 2) /* (AA24) VOUT0_DATA8.RGMII2_TX_CTL */ >; }; &cpsw3g { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&rmii1_pins_default &rgmii2_pins_default>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&mdio_pins_default &rmii1_rst_pins_default &rmii2_rst_pins_default>; rmii1-reset-gpios = <&main_gpio0 44 GPIO_ACTIVE_HIGH>; rmii2-reset-gpios = <&main_gpio1 30 GPIO_ACTIVE_HIGH>; cpsw3g_phy0: ethernet-phy@1 { reg = <1>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; ti,min-output-impedance; }; cpsw3g_phy1: ethernet-phy@0 { reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; ti,min-output-impedance; }; }; &cpsw_port1 { phy-mode = "rmii"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { phy-mode = "rgmii"; phy-handle = <&cpsw3g_phy1>; };
static int davinci_mdio_probe(struct platform_device *pdev) { struct mdio_platform_data *pdata = dev_get_platdata(&pdev->dev); struct device *dev = &pdev->dev; struct davinci_mdio_data *data; struct resource *res; struct phy_device *phy; int ret, addr; int autosuspend_delay_ms = -1; data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->manual_mode = false; data->bb_ctrl.ops = &davinci_mdiobb_ops; if (IS_ENABLED(CONFIG_OF) && dev->of_node) { const struct soc_device_attribute *soc_match_data; soc_match_data = soc_device_match(k3_mdio_socinfo); if (soc_match_data && soc_match_data->data) { const struct k3_mdio_soc_data *socdata = soc_match_data->data; data->manual_mode = socdata->manual_mode; } } if (data->manual_mode) data->bus = alloc_mdio_bitbang(&data->bb_ctrl); else data->bus = devm_mdiobus_alloc(dev); if (!data->bus) { dev_err(dev, "failed to alloc mii bus\n"); return -ENOMEM; } if (IS_ENABLED(CONFIG_OF) && dev->of_node) { const struct davinci_mdio_of_param *of_mdio_data; ret = davinci_mdio_probe_dt(&data->pdata, pdev); if (ret) return ret; snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s", pdev->name); of_mdio_data = of_device_get_match_data(&pdev->dev); if (of_mdio_data) { autosuspend_delay_ms = of_mdio_data->autosuspend_delay_ms; } } else { data->pdata = pdata ? (*pdata) : default_pdata; snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s-%x", pdev->name, pdev->id); } data->bus->name = dev_name(dev); if (data->manual_mode) { data->bus->read = davinci_mdiobb_read_c22; data->bus->write = davinci_mdiobb_write_c22; data->bus->read_c45 = davinci_mdiobb_read_c45; data->bus->write_c45 = davinci_mdiobb_write_c45; data->bus->reset = davinci_mdiobb_reset; dev_info(dev, "Configuring MDIO in manual mode\n"); } else { data->bus->read = davinci_mdio_read; data->bus->write = davinci_mdio_write; data->bus->reset = davinci_mdio_reset; data->bus->priv = data; } data->bus->parent = dev; data->clk = devm_clk_get(dev, "fck"); if (IS_ERR(data->clk)) { dev_err(dev, "failed to get device clock\n"); return PTR_ERR(data->clk); } dev_set_drvdata(dev, data); data->dev = dev; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return -EINVAL; data->regs = devm_ioremap(dev, res->start, resource_size(res)); if (!data->regs) return -ENOMEM; davinci_mdio_init_clk(data); pm_runtime_set_autosuspend_delay(&pdev->dev, autosuspend_delay_ms); pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_enable(&pdev->dev); /* register the mii bus * Create PHYs from DT only in case if PHY child nodes are explicitly * defined to support backward compatibility with DTs which assume that * Davinci MDIO will always scan the bus for PHYs detection. */ if (dev->of_node && of_get_child_count(dev->of_node)) data->skip_scan = true; ret = of_mdiobus_register(data->bus, dev->of_node); if (ret) goto bail_out; // ��ȡPHY��λGPIO rmii1_reset_gpio = devm_gpiod_get_optional(dev, "rmii1-reset", GPIOD_OUT_LOW); if (IS_ERR(rmii1_reset_gpio)) { ret = PTR_ERR(rmii1_reset_gpio); goto bail_out; } rmii2_reset_gpio = devm_gpiod_get_optional(dev, "rmii2-reset", GPIOD_OUT_LOW); if (IS_ERR(rmii2_reset_gpio)) { ret = PTR_ERR(rmii2_reset_gpio); goto bail_out; } if (rmii1_reset_gpio && rmii2_reset_gpio) { gpiod_set_value_cansleep(rmii1_reset_gpio, 1); gpiod_set_value_cansleep(rmii2_reset_gpio, 0); msleep(500); } /* Configure the 8512 PHY chip and disable the broadcast address. */ int phy_addr = 1; u16 original_val, modified_val; ret = data->bus->write(data->bus, phy_addr, 0x1e, 0x0000); if (ret) { dev_err(dev, "Failed to write to PHY 0x1e register\n"); goto bail_out; } original_val = data->bus->read(data->bus, phy_addr, 0x1f); dev_info(dev, "PHY %d register (0x1f) original value: 0x%04x\n", phy_addr, original_val); modified_val = original_val & ~(0x3 << 5); // clear bit5 bit6 ret = data->bus->write(data->bus, phy_addr, 0x1f, modified_val); if (ret) { dev_err(dev, "Failed to write modified value to PHY 0x1f register\n"); goto bail_out; } dev_info(dev, "PHY %d broadcast address disabled: bit5-6 cleared, new value: 0x%04x\n", phy_addr, modified_val); if (rmii2_reset_gpio) { gpiod_set_value_cansleep(rmii2_reset_gpio, 1); msleep(500); } /* config test */ int switch_addr = 0; ret = data->bus->write(data->bus, switch_addr, 0x1f, 0x003c); if (ret) { dev_err(dev, "Failed to configure switch\n"); goto bail_out; } u16 switch_reg = data->bus->read(data->bus, switch_addr, 0x1f); dev_info(dev, "PHY %d register (0x1f) original value: 0x%04x\n", switch_addr, switch_reg); switch_reg = data->bus->read(data->bus, switch_addr, 0x00); dev_info(dev, "PHY %d register (0x00) original value: 0x%04x\n", switch_addr, switch_reg); switch_reg = data->bus->read(data->bus, switch_addr, 0x0e); dev_info(dev, "PHY %d register (0x0e) original value: 0x%04x\n", switch_addr, switch_reg); /* scan and dump the bus */ for (addr = 0; addr < PHY_MAX_ADDR; addr++) { phy = mdiobus_get_phy(data->bus, addr); if (phy) { dev_info(dev, "phy[%d]: device %s, driver %s\n", phy->mdio.addr, phydev_name(phy), phy->drv ? phy->drv->name : "unknown"); } } return 0; bail_out: pm_runtime_dont_use_autosuspend(&pdev->dev); pm_runtime_disable(&pdev->dev); return ret; }
Then, below is the startup log
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 6.6.44-gef8287ba1ad0-dirty (cotrust@cotrust) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712, GNU ld (Arm GNU Toolchain 11.3.Rel1) 2.38.20220708) #17 SMP Thu Aug 28 14:31:53 CST 2025 [ 0.000000] Machine model: Texas Instruments J722S EVM [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '') [ 0.000000] printk: bootconsole [ns16550a0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: reserved mem: 0x0000000080000000..0x000000008007ffff (512 KiB) nomap non-reusable tfa@80000000 [ 0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-dma-memory@a0000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a0000000..0x00000000a00fffff (1024 KiB) nomap non-reusable vision-apps-r5f-dma-memory@a0000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-memory@a0100000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a0100000..0x00000000a0ffffff (15360 KiB) nomap non-reusable vision-apps-r5f-memory@a0100000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-dma-memory@a1000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a1000000..0x00000000a10fffff (1024 KiB) nomap non-reusable vision-apps-r5f-dma-memory@a1000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-memory@a1100000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a1100000..0x00000000a1ffffff (15360 KiB) nomap non-reusable vision-apps-r5f-memory@a1100000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-dma-memory@a2000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a2000000..0x00000000a20fffff (1024 KiB) nomap non-reusable vision-apps-r5f-dma-memory@a2000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 31 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-r5f-memory@a2100000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a2100000..0x00000000a3ffffff (31744 KiB) nomap non-reusable vision-apps-r5f-memory@a2100000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a5000000, size 32 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-rtos-ipc-memory-region@a5000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a5000000..0x00000000a6ffffff (32768 KiB) nomap non-reusable vision-apps-rtos-ipc-memory-region@a5000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a7000000, size 96 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-dma-memory@a7000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000a7000000..0x00000000acffffff (98304 KiB) nomap non-reusable vision-apps-dma-memory@a7000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000ad000000, size 1 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-c71-dma-memory@ad000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000ad000000..0x00000000ad0fffff (1024 KiB) nomap non-reusable vision-apps-c71-dma-memory@ad000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000ad100000, size 63 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-c71_0-memory@ad100000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000ad100000..0x00000000b0ffffff (64512 KiB) nomap non-reusable vision-apps-c71_0-memory@ad100000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000b1000000, size 1 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-c71_1-dma-memory@b1000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000b1000000..0x00000000b10fffff (1024 KiB) nomap non-reusable vision-apps-c71_1-dma-memory@b1000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000b1100000, size 63 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-c71_1-memory@b1100000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000b1100000..0x00000000b4ffffff (64512 KiB) nomap non-reusable vision-apps-c71_1-memory@b1100000 [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000b5000000, size 40 MiB [ 0.000000] OF: reserved mem: initialized node vision-apps-core-heap-memory-lo@b5000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x00000000b5000000..0x00000000b77fffff (40960 KiB) nomap non-reusable vision-apps-core-heap-memory-lo@b5000000 [ 0.000000] Reserved memory: created DMA memory pool at 0x0000000880000000, size 512 MiB [ 0.000000] OF: reserved mem: initialized node c7x-ddr-heaps-hi@880000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x0000000880000000..0x000000089fffffff (524288 KiB) nomap non-reusable c7x-ddr-heaps-hi@880000000 [ 0.000000] OF: reserved mem: initialized node vision_apps_shared-memories, compatible id dma-heap-carveout [ 0.000000] OF: reserved mem: 0x0000000900000000..0x000000091fffffff (524288 KiB) map non-reusable vision_apps_shared-memories [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000980000000, size 896 MiB [ 0.000000] OF: reserved mem: initialized node linux-cma-buffers@980000000, compatible id shared-dma-pool [ 0.000000] OF: reserved mem: 0x0000000980000000..0x00000009b7ffffff (917504 KiB) map reusable linux-cma-buffers@980000000 [ 0.000000] Zone ranges: [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff] [ 0.000000] DMA32 empty [ 0.000000] Normal [mem 0x0000000100000000-0x00000009ffffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080000000-0x000000008007ffff] [ 0.000000] node 0: [mem 0x0000000080080000-0x000000009e7fffff] [ 0.000000] node 0: [mem 0x000000009e800000-0x00000000a3ffffff] [ 0.000000] node 0: [mem 0x00000000a4000000-0x00000000a4ffffff] [ 0.000000] node 0: [mem 0x00000000a5000000-0x00000000b77fffff] [ 0.000000] node 0: [mem 0x00000000b7800000-0x00000000ffffffff] [ 0.000000] node 0: [mem 0x0000000880000000-0x000000089fffffff] [ 0.000000] node 0: [mem 0x00000008a0000000-0x00000009ffffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000009ffffffff] [ 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.5 [ 0.000000] percpu: Embedded 21 pages/cpu s45480 r8192 d32344 u86016 [ 0.000000] pcpu-alloc: s45480 r8192 d32344 u86016 alloc=21*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: detected: GIC system register CPU interface [ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration [ 0.000000] CPU features: detected: ARM erratum 845719 [ 0.000000] alternatives: applying boot alternatives [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=076c4a2a-02 rw rootfstype=ext4 rootwait [ 0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 2064384 [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] software IO TLB: area num 4. [ 0.000000] software IO TLB: mapped [mem 0x00000000fbfff000-0x00000000fffff000] (64MB) [ 0.000000] Memory: 5800576K/8388608K available (10944K kernel code, 1206K rwdata, 2728K rodata, 2240K init, 486K bss, 1670528K reserved, 917504K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode [ 0.000000] GICv3: 256 SPIs implemented [ 0.000000] GICv3: 0 Extended SPIs implemented [ 0.000000] Root IRQ handler: 0xffff800080010080 [ 0.000000] GICv3: GICv3 features: 16 PPIs [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000 [ 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 @8a0800000 (flat, esz 8, psz 64K, shr 0) [ 0.000000] ITS: using cache flushing for cmd queue [ 0.000000] GICv3: using LPI property table @0x00000008a0030000 [ 0.000000] GIC: using cache flushing for LPI property table [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x00000008a0040000 [ 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.008475] Console: colour dummy device 80x25 [ 0.013059] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000) [ 0.023722] pid_max: default: 32768 minimum: 301 [ 0.028484] LSM: initializing lsm=capability,selinux,integrity [ 0.034456] SELinux: Initializing. [ 0.038129] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 0.045883] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 0.055319] rcu: Hierarchical SRCU implementation. [ 0.060228] rcu: Max phase no-delay instances is 400. [ 0.065632] Platform MSI: msi-controller@1820000 domain created [ 0.071942] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created [ 0.081201] EFI services will not be available. [ 0.085976] smp: Bringing up secondary CPUs ... [ 0.091075] Detected VIPT I-cache on CPU1 [ 0.091147] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000 [ 0.091161] GICv3: CPU1: using allocated LPI pending table @0x00000008a0050000 [ 0.091203] CPU1: Booted secondary processor 0x0000000001 [0x410fd034] [ 0.091654] Detected VIPT I-cache on CPU2 [ 0.091703] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000 [ 0.091715] GICv3: CPU2: using allocated LPI pending table @0x00000008a0060000 [ 0.091743] CPU2: Booted secondary processor 0x0000000002 [0x410fd034] [ 0.092138] Detected VIPT I-cache on CPU3 [ 0.092179] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000 [ 0.092190] GICv3: CPU3: using allocated LPI pending table @0x00000008a0070000 [ 0.092216] CPU3: Booted secondary processor 0x0000000003 [0x410fd034] [ 0.092260] smp: Brought up 1 node, 4 CPUs [ 0.171836] SMP: Total of 4 processors activated. [ 0.176635] CPU features: detected: 32-bit EL0 Support [ 0.181878] CPU features: detected: CRC32 instructions [ 0.187166] CPU: All CPU(s) started at EL2 [ 0.191347] alternatives: applying system-wide alternatives [ 0.198179] devtmpfs: initialized [ 0.211519] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns [ 0.221494] futex hash table entries: 1024 (order: 4, 65536 bytes, linear) [ 0.249804] pinctrl core: initialized pinctrl subsystem [ 0.255468] DMI not present or invalid. [ 0.259802] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.266725] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations [ 0.274129] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations [ 0.282218] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations [ 0.290434] audit: initializing netlink subsys (disabled) [ 0.296043] audit: type=2000 audit(0.107:1): state=initialized audit_enabled=0 res=1 [ 0.296404] thermal_sys: Registered thermal governor 'step_wise' [ 0.304101] ASID allocator initialised with 65536 entries [ 0.326761] platform 30200000.dss: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-txes/oldi@1 [ 0.336644] platform 30200000.dss: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-txes/oldi@0 [ 0.348286] platform display: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-txes/oldi@1 [ 0.357726] platform display: Fixed dependency cycle(s) with /bus@f0000/dss@30200000/oldi-txes/oldi@0 [ 0.368162] Modules: 28336 pages in range for non-PLT usage [ 0.368169] Modules: 519856 pages in range for PLT usage [ 0.374367] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages [ 0.386742] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page [ 0.393141] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages [ 0.400070] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page [ 0.406466] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages [ 0.413393] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page [ 0.419790] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages [ 0.426718] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page [ 0.434003] k3-chipinfo 43000014.chipid: Family:J722S rev:SR1.0 JTAGID[0x0bba002f] Detected [ 0.443526] iommu: Default domain type: Translated [ 0.448432] iommu: DMA domain TLB invalidation policy: strict mode [ 0.455008] SCSI subsystem initialized [ 0.458927] libata version 3.00 loaded. [ 0.459074] usbcore: registered new interface driver usbfs [ 0.464694] usbcore: registered new interface driver hub [ 0.470137] usbcore: registered new device driver usb [ 0.475734] pps_core: LinuxPPS API ver. 1 registered [ 0.480803] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.490138] PTP clock support registered [ 0.494291] EDAC MC: Ver: 3.0.0 [ 0.497717] scmi_core: SCMI protocol bus registered [ 0.502881] FPGA manager framework [ 0.506423] Advanced Linux Sound Architecture Driver Initialized. [ 0.513393] vgaarb: loaded [ 0.516416] clocksource: Switched to clocksource arch_sys_counter [ 0.522829] VFS: Disk quotas dquot_6.6.0 [ 0.526857] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.539361] Carveout Heap: Exported 512 MiB at 0x0000000900000000 [ 0.545672] NET: Registered PF_INET protocol family [ 0.550911] IP idents hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.563692] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear) [ 0.572482] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.580400] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.588878] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear) [ 0.598209] TCP: Hash tables configured (established 65536 bind 65536) [ 0.605013] UDP hash table entries: 4096 (order: 5, 131072 bytes, linear) [ 0.612095] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear) [ 0.619735] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.625847] RPC: Registered named UNIX socket transport module. [ 0.631904] RPC: Registered udp transport module. [ 0.636706] RPC: Registered tcp transport module. [ 0.641505] RPC: Registered tcp-with-tls transport module. [ 0.647103] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.653687] PCI: CLS 0 bytes, default 64 [ 0.658650] Initialise system trusted keyrings [ 0.663342] workingset: timestamp_bits=62 max_order=21 bucket_order=0 [ 0.670174] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.676303] NFS: Registering the id_resolver key type [ 0.681483] Key type id_resolver registered [ 0.685752] Key type id_legacy registered [ 0.689855] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 0.696698] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... [ 0.733968] Key type asymmetric registered [ 0.738156] Asymmetric key parser 'x509' registered [ 0.743180] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244) [ 0.750735] io scheduler mq-deadline registered [ 0.755359] io scheduler kyber registered [ 0.759465] io scheduler bfq registered [ 0.766327] pinctrl-single 4084000.pinctrl: 34 pins, size 136 [ 0.772768] pinctrl-single f4000.pinctrl: 171 pins, size 684 [ 0.784924] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled [ 0.802580] loop: module loaded [ 0.806732] megasas: 07.725.01.00-rc1 [ 0.811346] SPI driver spidev has no spi_device_id for rohm,bh2228fv [ 0.820214] tun: Universal TUN/TAP device driver, 1.6 [ 0.826244] VFIO - User Level meta-driver version: 0.3 [ 0.832613] usbcore: registered new interface driver usb-storage [ 0.839418] i2c_dev: i2c /dev entries driver [ 0.844293] sdhci: Secure Digital Host Controller Interface driver [ 0.850605] sdhci: Copyright(c) Pierre Ossman [ 0.855262] sdhci-pltfm: SDHCI platform and OF driver helper [ 0.861839] ledtrig-cpu: registered to indicate activity on CPUs [ 0.868273] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping .... [ 0.875444] usbcore: registered new interface driver usbhid [ 0.881135] usbhid: USB HID core driver [ 0.885822] optee: probing for conduit method. [ 0.890385] optee: revision 4.4 (8f645256efc0dc66) [ 0.890682] optee: dynamic shared memory is enabled [ 0.901163] random: crng init done [ 0.904722] optee: initialized driver [ 0.910229] Initializing XFRM netlink socket [ 0.914632] NET: Registered PF_PACKET protocol family [ 0.919852] Key type dns_resolver registered [ 0.930421] Loading compiled-in X.509 certificates [ 0.944877] ti-sci 44043000.system-controller: ABI: 4.0 (firmware rev 0x000a '10.1.6--v10.01.06 (Fiery Fox)') [ 1.006931] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. [ 1.014629] rtc-pcf8563 0-0051: registered as rtc0 [ 1.019838] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. [ 1.027396] rtc-pcf8563 0-0051: hctosys: unable to read the hardware clock [ 1.034827] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz [ 1.041075] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created [ 1.049391] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created [ 1.058578] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created [ 1.067528] ti-sci-inta 4e400000.interrupt-controller: Interrupt Aggregator domain 200 created [ 1.081988] ti-udma 485c0100.dma-controller: Number of rings: 82 [ 1.090162] ti-udma 485c0100.dma-controller: Channels: 44 (bchan: 16, tchan: 12, rchan: 16) [ 1.100656] ti-udma 485c0000.dma-controller: Number of rings: 150 [ 1.110896] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15) [ 1.120118] ti-udma 4e230000.dma-controller: Number of rings: 40 [ 1.128603] ti-udma 4e230000.dma-controller: Channels: 40 (bchan: 0, tchan: 8, rchan: 32) [ 1.139247] printk: console [ttyS2] disabled [ 1.143895] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 305, base_baud = 3000000) is a 8250 [ 1.152734] printk: console [ttyS2] enabled [ 1.161175] printk: bootconsole [ns16550a0] disabled [ 1.173005] tidss 30200000.dss: failed to init OLDI: -517 [ 1.179890] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01903, cpsw version 0x6BA81903 Ports: 3 quirks:00000006 [ 1.192930] am65-cpsw-nuss 8000000.ethernet: Use random MAC address [ 1.199198] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5 [ 1.206323] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512 [ 1.212758] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010d, freq:500000000, add_val:1 pps:0 [ 1.226111] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19 [ 1.236684] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller [ 1.242196] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1 [ 1.249932] xhci-hcd xhci-hcd.0.auto: USB3 root hub has no ports [ 1.255932] xhci-hcd xhci-hcd.0.auto: hcc params 0x0258fe6d hci version 0x110 quirks 0x0000008020000010 [ 1.265348] xhci-hcd xhci-hcd.0.auto: irq 316, io mem 0x31000000 [ 1.272052] hub 1-0:1.0: USB hub found [ 1.275833] hub 1-0:1.0: 1 port detected [ 1.280779] input: pwm-beeper as /devices/platform/pwm-beeper/input/input0 [ 1.288988] mmc0: CQHCI version 5.10 [ 1.289381] mmc1: CQHCI version 5.10 [ 1.298918] panel-simple display: supply power not found, using dummy regulator [ 1.308717] [drm] Initialized tidss 1.0.0 20180215 for 30200000.dss on minor 0 [ 1.331063] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit [ 1.331063] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit [ 1.351399] Console: switching to colour frame buffer device 240x67 [ 1.388462] tidss 30200000.dss: [drm] fb0: tidssdrmfb frame buffer device [ 1.394575] mmc1: new ultra high speed SDR104 SDXC card at address b36a [ 1.402440] mmcblk1: mmc1:b36a EZSD1 58.2 GiB [ 1.408461] mmcblk1: p1 p2 [ 1.431702] mmc0: Command Queue Engine enabled [ 1.436163] mmc0: new HS400 MMC card at address 0001 [ 1.436429] davinci_mdio 8000f00.mdio: davinci mdio revision 17.7, bus freq 1000000 [ 1.441607] mmcblk0: mmc0:0001 88A398 7.28 GiB [ 1.454643] mmcblk0: p1 p2 [ 1.457892] mmcblk0boot0: mmc0:0001 88A398 4.00 MiB [ 1.463662] mmcblk0boot1: mmc0:0001 88A398 4.00 MiB [ 1.469291] mmcblk0rpmb: mmc0:0001 88A398 4.00 MiB, chardev (239:0) [ 1.954847] davinci_mdio 8000f00.mdio: PHY 1 register (0x1f) original value: 0x0c7f [ 1.962713] davinci_mdio 8000f00.mdio: PHY 1 broadcast address disabled: bit5-6 cleared, new value: 0x0c1f [ 2.474838] davinci_mdio 8000f00.mdio: PHY 0 register (0x1f) original value: 0xfffb [ 2.482692] davinci_mdio 8000f00.mdio: PHY 0 register (0x00) original value: 0xfffb [ 2.490546] davinci_mdio 8000f00.mdio: PHY 0 register (0x0e) original value: 0xfffb [ 2.498192] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver unknown [ 2.506010] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver unknown [ 2.514927] input: matrix_keyboard0 as /devices/platform/matrix_keyboard0/input/input1 [ 2.528535] power_cut_probe sucess ! [ 2.532556] clk: Disabling unused clocks [ 2.541419] ALSA device list: [ 2.544392] No soundcards found. [ 2.701062] EXT4-fs (mmcblk1p2): recovery complete [ 2.706892] EXT4-fs (mmcblk1p2): mounted filesystem 2c28f9f4-ee3a-46b9-95b8-207d7e959c17 r/w with ordered data mode. Quota mode: none. [ 2.719050] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 2.725538] devtmpfs: mounted [ 2.729098] Freeing unused kernel memory: 2240K [ 2.733716] Run /sbin/init as init process [ 2.737807] with arguments: [ 2.737810] /sbin/init [ 2.737812] with environment: [ 2.737815] HOME=/ [ 2.737818] TERM=linux [ 2.916205] systemd[1]: System time before build time, advancing clock. [ 2.944644] systemd[1]: systemd 255.13^ 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 -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified) [ 2.976556] systemd[1]: Detected architecture arm64. [ 2.991049] systemd[1]: Hostname set to <j722s-evm>. [ 3.072122] systemd-sysv-generator[100]: SysV service '/etc/init.d/edgeai-launcher.sh' 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 safe, robust and future-proof. ! This compatibility logic is deprecated, expect removal soon. ! [ 3.262731] systemd[1]: Binding to IPv6 address not available since kernel does not support IPv6. [ 3.271661] systemd[1]: Binding to IPv6 address not available since kernel does not support IPv6. [ 3.312820] systemd[1]: /usr/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. [ 3.424240] 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. [ 3.508509] systemd[1]: Queued start job for default target Graphical Interface. [ 3.531786] systemd[1]: Created slice Slice /system/getty. [ 3.546762] systemd[1]: Created slice Slice /system/modprobe. [ 3.561723] systemd[1]: Created slice Slice /system/serial-getty. [ 3.577135] systemd[1]: Created slice User and Session Slice. [ 3.591795] systemd[1]: Started Dispatch Password Requests to Console Directory Watch. [ 3.608700] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ 3.627571] systemd[1]: Expecting device /dev/mmcblk0p1... [ 3.638483] systemd[1]: Expecting device /dev/ttyS2... [ 3.649645] systemd[1]: Reached target Path Units. [ 3.660530] systemd[1]: Reached target Remote File Systems. [ 3.674524] systemd[1]: Reached target Slice Units. [ 3.685531] systemd[1]: Reached target Swaps. [ 3.696330] systemd[1]: Listening on RPCbind Server Activation Socket. [ 3.711605] systemd[1]: Reached target RPC Port Mapper. [ 3.733302] systemd[1]: Listening on Process Core Dump Socket. [ 3.747895] systemd[1]: Listening on initctl Compatibility Named Pipe. [ 3.763584] systemd[1]: Listening on Journal Audit Socket. [ 3.778100] systemd[1]: Listening on Journal Socket (/dev/log). [ 3.793129] systemd[1]: Listening on Journal Socket. [ 3.807666] systemd[1]: Listening on Network Service Netlink Socket. [ 3.827593] systemd[1]: Listening on udev Control Socket. [ 3.842146] systemd[1]: Listening on udev Kernel Socket. [ 3.856089] systemd[1]: Listening on User Database Manager Socket. [ 3.884784] systemd[1]: Mounting Huge Pages File System... [ 3.893211] systemd[1]: Mounting POSIX Message Queue File System... [ 3.913632] systemd[1]: Mounting Kernel Debug File System... [ 3.926086] systemd[1]: Kernel Trace File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/tracing). [ 3.947798] systemd[1]: Mounting Temporary Directory /tmp... [ 3.960121] systemd[1]: Create List of Static Device Nodes was skipped because of an unmet condition check (ConditionFileNotEmpty=/lib/modules/6.6.44-gef8287ba1ad0-dirty/modules.devname). [ 3.980347] systemd[1]: Starting Load Kernel Module configfs... [ 3.996183] systemd[1]: Starting Load Kernel Module drm... [ 4.021080] systemd[1]: Starting Load Kernel Module fuse... [ 4.030757] systemd[1]: Starting Start psplash boot splash screen... [ 4.050545] systemd[1]: Starting RPC Bind... [ 4.060951] systemd[1]: File System Check on Root Device was skipped because of an unmet condition check (ConditionPathIsReadWrite=!/). [ 4.074326] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling. [ 4.074343] systemd[1]: systemd-journald.service: (This warning is only shown for the first unit using IP firewalling.) [ 4.087136] systemd[1]: Starting Journal Service... [ 4.142168] systemd[1]: Starting Load Kernel Modules... [ 4.159214] systemd[1]: Starting Generate network units from Kernel command line... [ 4.170053] systemd-journald[113]: Collecting audit messages is enabled. [ 4.187865] systemd[1]: Starting Remount Root and Kernel File Systems... [ 4.220980] systemd[1]: Starting Create Static Device Nodes in /dev gracefully... [ 4.252939] EXT4-fs (mmcblk1p2): re-mounted 2c28f9f4-ee3a-46b9-95b8-207d7e959c17 r/w. Quota mode: none. [ 4.267261] systemd[1]: Starting Coldplug All udev Devices... [ 4.287104] systemd[1]: Started RPC Bind. [ 4.297245] systemd[1]: Started Start psplash boot splash screen. [ 4.312994] systemd[1]: Started Journal Service. [ 4.558260] systemd-journald[113]: Received client request to flush runtime journal. [ 6.374213] EXT4-fs (mmcblk0p1): recovery complete [ 6.379909] EXT4-fs (mmcblk0p1): mounted filesystem 253dc52a-5986-46eb-944e-a3d12db0a36e r/w with ordered data mode. Quota mode: none. [ 8.367292] EXT4-fs (mmcblk0p2): mounted filesystem 67e486ba-40d1-424a-beed-1acd824f74ad r/w with ordered data mode. Quota mode: none. [ 8.941075] dbus-broker-lau[547]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set [ 9.440810] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:01] driver [Generic PHY] (irq=POLL) [ 9.450900] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rmii link mode [ 10.170974] audit: type=1006 audit(1743200114.600:2): pid=674 uid=0 subj=kernel old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=1 res=1 [ 10.184611] audit: type=1300 audit(1743200114.600:2): arch=c00000b7 syscall=64 success=yes exit=4 a0=8 a1=ffffd93cc6e8 a2=4 a3=1 items=0 ppid=1 pid=674 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="/usr/lib/systemd/systemd-executor" subj=kernel key=(null) [ 10.212335] audit: type=1327 audit(1743200114.600:2): proctitle="(systemd)" [ 10.901121] audit: type=1006 audit(1743200115.331:3): pid=644 uid=0 subj=kernel old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=2 res=1 [ 10.915140] audit: type=1300 audit(1743200115.331:3): arch=c00000b7 syscall=64 success=yes exit=4 a0=8 a1=ffffe9d6e348 a2=4 a3=1 items=0 ppid=1 pid=644 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=tty7 ses=2 comm="(weston)" exe="/usr/lib/systemd/systemd-executor" subj=kernel key=(null) [ 10.942621] audit: type=1327 audit(1743200115.331:3): proctitle="(weston)" [ 12.565422] platform 2b300050.target-module: deferred probe pending [ 2270.483110] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
This switch has always been unable to read/write registers through MDIO, and when I pulled the reset pin of the PHY chip low, using an oscilloscope to measure MDIO, there was no signal at all. After the reset pin of the phy chip is pulled high, the signal can be measured. Please tell me where the problem lies that has caused my switch chip to keep failing to connect.