lkml.org 
[lkml]   [2020]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 54/78] drm/vc4: hdmi: Add PHY RNG enable / disable function
    Date
    Let's continue the implementation of hooks for the parts that change in the
    BCM2711 SoC with the PHY RNG setup.

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

    diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
    index 068041145d1c..19897d6525ac 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
    @@ -762,9 +762,9 @@ static int vc4_hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
    switch (cmd) {
    case SNDRV_PCM_TRIGGER_START:
    vc4_hdmi_set_audio_infoframe(encoder);
    - HDMI_WRITE(HDMI_TX_PHY_CTL_0,
    - HDMI_READ(HDMI_TX_PHY_CTL_0) &
    - ~VC4_HDMI_TX_PHY_RNG_PWRDN);
    +
    + if (vc4_hdmi->variant->phy_rng_enable)
    + vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);

    HDMI_WRITE(HDMI_MAI_CTL,
    VC4_SET_FIELD(vc4_hdmi->audio.channels,
    @@ -776,9 +776,10 @@ static int vc4_hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
    VC4_HD_MAI_CTL_DLATE |
    VC4_HD_MAI_CTL_ERRORE |
    VC4_HD_MAI_CTL_ERRORF);
    - HDMI_WRITE(HDMI_TX_PHY_CTL_0,
    - HDMI_READ(HDMI_TX_PHY_CTL_0) |
    - VC4_HDMI_TX_PHY_RNG_PWRDN);
    +
    + if (vc4_hdmi->variant->phy_rng_disable)
    + vc4_hdmi->variant->phy_rng_disable(vc4_hdmi);
    +
    break;
    default:
    break;
    @@ -1433,6 +1434,8 @@ static const struct vc4_hdmi_variant bcm2835_variant = {
    .reset = vc4_hdmi_reset,
    .phy_init = vc4_hdmi_phy_init,
    .phy_disable = vc4_hdmi_phy_disable,
    + .phy_rng_enable = vc4_hdmi_phy_rng_enable,
    + .phy_rng_disable = vc4_hdmi_phy_rng_disable,
    };

    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 32c80161c786..950accbc44e4 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi.h
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
    @@ -47,6 +47,12 @@ struct vc4_hdmi_variant {

    /* Callback to disable the PHY */
    void (*phy_disable)(struct vc4_hdmi *vc4_hdmi);
    +
    + /* Callback to enable the RNG in the PHY */
    + void (*phy_rng_enable)(struct vc4_hdmi *vc4_hdmi);
    +
    + /* Callback to disable the RNG in the PHY */
    + void (*phy_rng_disable)(struct vc4_hdmi *vc4_hdmi);
    };

    /* HDMI audio information */
    @@ -107,5 +113,7 @@ encoder_to_vc4_hdmi(struct drm_encoder *encoder)
    void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi,
    struct drm_display_mode *mode);
    void vc4_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi);
    +void vc4_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi);
    +void vc4_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi);

    #endif /* _VC4_HDMI_H_ */
    diff --git a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
    index 5a1746877bb5..93287e24d7d1 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
    @@ -7,6 +7,7 @@
    */

    #include "vc4_hdmi.h"
    +#include "vc4_regs.h"
    #include "vc4_hdmi_regs.h"

    void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, struct drm_display_mode *mode)
    @@ -23,3 +24,17 @@ void vc4_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi)
    {
    HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0xf << 16);
    }
    +
    +void vc4_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi)
    +{
    + HDMI_WRITE(HDMI_TX_PHY_CTL_0,
    + HDMI_READ(HDMI_TX_PHY_CTL_0) &
    + ~VC4_HDMI_TX_PHY_RNG_PWRDN);
    +}
    +
    +void vc4_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi)
    +{
    + HDMI_WRITE(HDMI_TX_PHY_CTL_0,
    + HDMI_READ(HDMI_TX_PHY_CTL_0) |
    + VC4_HDMI_TX_PHY_RNG_PWRDN);
    +}
    --
    git-series 0.9.1
    \
     
     \ /
      Last update: 2020-07-08 19:45    [W:4.180 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site