• Jae Hyun Yoo's avatar
    media: aspeed: fix clock handling logic · 3536169f
    Jae Hyun Yoo authored
    Video engine uses eclk and vclk for its clock sources and its reset
    control is coupled with eclk so the current clock enabling sequence works
    like below.
    
     Enable eclk
     De-assert Video Engine reset
     10ms delay
     Enable vclk
    
    It introduces improper reset on the Video Engine hardware and eventually
    the hardware generates unexpected DMA memory transfers that can corrupt
    memory region in random and sporadic patterns. This issue is observed
    very rarely on some specific AST2500 SoCs but it causes a critical
    kernel panic with making a various shape of signature so it's extremely
    hard to debug. Moreover, the issue is observed even when the video
    engine is not actively used because udevd turns on the video engine
    hardware for a short time to make a query in every boot.
    
    To fix this issue, this commit changes the clock handling logic to make
    the reset de-assertion triggered after enabling both eclk and vclk. Also,
    it adds clk_unprepare call for a case when probe fails.
    
    clk: ast2600: fix reset settings for eclk and vclk
    Video engine reset setting should be coupled with eclk to match it
    with the setting for previous Aspeed SoCs which is defined in
    clk-aspeed.c since all Aspeed SoCs are sharing a single video engine
    driver. Also, reset bit 6 is defined as 'Video Engine' reset in
    datasheet so it should be de-asserted when eclk is enabled. This
    commit fixes the setting.
    
    Fixes: d2b4387f ("media: platform: Add Aspeed Video Engine driver")
    Signed-off-by: default avatarJae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
    Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
    Reviewed-by: default avatarEddie James <eajames@linux.ibm.com>
    Fixes: d3d04f6c ("clk: Add support for AST2600 SoC")
    Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
    Acked-by: default avatarStephen Boyd <sboyd@kernel.org>
    Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
    3536169f
clk-ast2600.c 23.1 KB