• Chen-Yu Tsai's avatar
    drm/sun4i: hdmi: Add support for controller hardware variants · 939d749a
    Chen-Yu Tsai authored
    The HDMI controller found in earlier Allwinner SoCs have slight
    differences between the A10, A10s, and the A31:
    
      - Need different initial values for the PLL related registers
    
      - Different behavior of the DDC and TMDS clocks
    
      - Different register layout for the DDC portion
    
      - Separate DDC parent clock on the A31
    
      - Explicit reset control
    
    For the A31, the HDMI TMDS clock has a different value offset for
    the divider. The HDMI DDC block is different from the one in the
    other SoCs. As far as the DDC clock goes, it has no pre-divider,
    as it is clocked from a slower parent clock, not the TMDS clock.
    The divider offset from the register value is different. And the
    clock control register is at a different offset.
    
    A new variant data structure is created to store pointers to the
    above functions, structures, and the different initial values.
    Another flag notates whether there is a separate DDC parent clock.
    If not, the TMDS clock is passed to the DDC clock create function,
    as before.
    
    Regmap fields are used to deal with the different register layout
    of the DDC block.
    Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
    Acked-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171010032008.682-8-wens@csie.org
    939d749a
sun4i_hdmi_tmds_clk.c 5.27 KB