mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
drm/bridge: analogix_dp: Workaround async issue between pclk clock and 24m clock
Background: - EDP software register bank is on the EDP 24m clock domain; - CPU access EDP software register bank, need to go through EDP APB read/write bus and EDP internal read/write bus; - EDP APB read/write bus is on the EDP pclk clock domain; - EDP internal read/write bus is on the EDP 24m clock domain; - Asynchronous logic circuit is added between APB read/write bus and Internal read/write bus; Issue: There is a bug on the Asynchronous logic circuit between APB read/write bus and Internal read/write bus; This bug will be random to cause the following wrong control/address signals sequence happen; - For write, maybe wrong register address is wrote in; - For read, maybe wrong register address is read out; Workaround: - For CPU write EDP register operation, write any register need following three steps, 1): Read EDP_BASE+0x00 dummy register firstly, latch the dummy register address on Reg_Address bus, to avoid next step write to wrong register to cause function register overrun; 2): 1st time to write the EDP register you want to operate, to latch the real write address on Reg_Address bus; 3): 2nd time to write the EDP register you want to operate, to make sure the data is write on the real write address; - For CPU read EDP register operation, read any register need following two steps, 1): 1st time to read the EDP register you want to operate, to latch the real read address on Reg_Address bus; 2): 2nd time to read the EDP register you want to operate, to make sure the data is read out from the real read address; Change-Id: I4a87d3883efe94d32ccf8809edb5b9d869670d2d Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in: