Cannot get right value when writing clause 22 frame to MDIO bus on Linux
I tried to manipulate marvell's 88Q5050 switch core registers via mdio bus connected to MPSOC( using EMIO pins). All the things including signals displayed on oscilloscope and values in registers are right on bare machine. But on linux, the values I read from register 0xff0e0034(using GEM3's mdio) are always 0xFFFF.
It is confusing that I can see the values write by Q5050 on oscilloscope when I execute the command "devmem 0xff0e0034 32 0x6082000". But I can not get the value from 0xff0e0034.
Signal graphs and commands' outcomes are attached below.
Could anyone help me figure this out?
Obviously, according to the signal, the value should be 0x0003, but the command returns 0xFFFF