lkml.org 
[lkml]   [2020]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 74/89] drm/vc4: hdmi: Add reset callback
    Date
    The BCM2711 and BCM283x HDMI controllers use a slightly different reset
    sequence, so let's add a callback to reset the controller.

    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    ---
    drivers/gpu/drm/vc4/vc4_hdmi.c | 17 ++++++++++++-----
    drivers/gpu/drm/vc4/vc4_hdmi.h | 3 +++
    2 files changed, 15 insertions(+), 5 deletions(-)

    diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
    index 0e8cf0eb1891..29e94eee9f23 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
    @@ -68,6 +68,15 @@ static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
    return 0;
    }

    +static void vc4_hdmi_reset(struct vc4_hdmi *vc4_hdmi)
    +{
    + HDMI_WRITE(HDMI_SW_RESET_CONTROL,
    + VC4_HDMI_SW_RESET_HDMI |
    + VC4_HDMI_SW_RESET_FORMAT_DETECT);
    +
    + HDMI_WRITE(HDMI_SW_RESET_CONTROL, 0);
    +}
    +
    static enum drm_connector_status
    vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
    {
    @@ -371,11 +380,8 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
    return;
    }

    - HDMI_WRITE(HDMI_SW_RESET_CONTROL,
    - VC4_HDMI_SW_RESET_HDMI |
    - VC4_HDMI_SW_RESET_FORMAT_DETECT);
    -
    - HDMI_WRITE(HDMI_SW_RESET_CONTROL, 0);
    + if (vc4_hdmi->variant->reset)
    + vc4_hdmi->variant->reset(vc4_hdmi);

    /* PHY should be in reset, like
    * vc4_hdmi_encoder_disable() does.
    @@ -1406,6 +1412,7 @@ struct vc4_hdmi_variant bcm2835_variant = {
    .num_registers = ARRAY_SIZE(vc4_hdmi_fields),

    .init_resources = vc4_hdmi_init_resources,
    + .reset = vc4_hdmi_reset,
    };

    static const struct of_device_id vc4_hdmi_dt_match[] = {
    diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
    index f4c052a78802..270397c9e800 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi.h
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
    @@ -34,6 +34,9 @@ struct vc4_hdmi_variant {
    * clocks, etc) for that variant.
    */
    int (*init_resources)(struct vc4_hdmi *vc4_hdmi);
    +
    + /* Callback to reset the HDMI block */
    + void (*reset)(struct vc4_hdmi *vc4_hdmi);
    };

    /* HDMI audio information */
    --
    git-series 0.9.1
    \
     
     \ /
      Last update: 2020-02-24 10:40    [W:4.126 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site