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 46/78] drm/vc4: hdmi: Pass vc4_hdmi to CEC code
    Date
    Our CEC code also retrieves the associated vc4_hdmi by setting the
    vc4_dev pointer as its private data, and then dereferences its vc4_hdmi
    pointer.

    In order to eventually get rid of that pointer, we can simply pass the
    vc4_hdmi pointer directly.

    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    ---
    drivers/gpu/drm/vc4/vc4_hdmi.c | 24 +++++++++---------------
    1 file changed, 9 insertions(+), 15 deletions(-)

    diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
    index d9db3c38f433..09b297a1b39d 100644
    --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
    +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
    @@ -1033,8 +1033,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
    #ifdef CONFIG_DRM_VC4_HDMI_CEC
    static irqreturn_t vc4_cec_irq_handler_thread(int irq, void *priv)
    {
    - struct vc4_dev *vc4 = priv;
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    + struct vc4_hdmi *vc4_hdmi = priv;

    if (vc4_hdmi->cec_irq_was_rx) {
    if (vc4_hdmi->cec_rx_msg.len)
    @@ -1054,9 +1053,8 @@ static irqreturn_t vc4_cec_irq_handler_thread(int irq, void *priv)
    return IRQ_HANDLED;
    }

    -static void vc4_cec_read_msg(struct vc4_dev *vc4, u32 cntrl1)
    +static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1)
    {
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
    unsigned int i;

    @@ -1074,8 +1072,7 @@ static void vc4_cec_read_msg(struct vc4_dev *vc4, u32 cntrl1)

    static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
    {
    - struct vc4_dev *vc4 = priv;
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    + struct vc4_hdmi *vc4_hdmi = priv;
    u32 stat = HDMI_READ(VC4_HDMI_CPU_STATUS);
    u32 cntrl1, cntrl5;

    @@ -1086,7 +1083,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
    cntrl5 = HDMI_READ(VC4_HDMI_CEC_CNTRL_5);
    vc4_hdmi->cec_irq_was_rx = cntrl5 & VC4_HDMI_CEC_RX_CEC_INT;
    if (vc4_hdmi->cec_irq_was_rx) {
    - vc4_cec_read_msg(vc4, cntrl1);
    + vc4_cec_read_msg(vc4_hdmi, cntrl1);
    cntrl1 |= VC4_HDMI_CEC_CLEAR_RECEIVE_OFF;
    HDMI_WRITE(VC4_HDMI_CEC_CNTRL_1, cntrl1);
    cntrl1 &= ~VC4_HDMI_CEC_CLEAR_RECEIVE_OFF;
    @@ -1102,8 +1099,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)

    static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)
    {
    - struct vc4_dev *vc4 = cec_get_drvdata(adap);
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
    /* clock period in microseconds */
    const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
    u32 val = HDMI_READ(VC4_HDMI_CEC_CNTRL_5);
    @@ -1146,8 +1142,7 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)

    static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
    {
    - struct vc4_dev *vc4 = cec_get_drvdata(adap);
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);

    HDMI_WRITE(VC4_HDMI_CEC_CNTRL_1,
    (HDMI_READ(VC4_HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) |
    @@ -1158,8 +1153,7 @@ static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
    static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts,
    u32 signal_free_time, struct cec_msg *msg)
    {
    - struct vc4_dev *vc4 = cec_get_drvdata(adap);
    - struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
    + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
    u32 val;
    unsigned int i;

    @@ -1306,7 +1300,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)

    #ifdef CONFIG_DRM_VC4_HDMI_CEC
    vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops,
    - vc4, "vc4",
    + vc4_hdmi, "vc4",
    CEC_CAP_DEFAULTS |
    CEC_CAP_CONNECTOR_INFO, 1);
    ret = PTR_ERR_OR_ZERO(vc4_hdmi->cec_adap);
    @@ -1330,7 +1324,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
    ret = devm_request_threaded_irq(dev, platform_get_irq(pdev, 0),
    vc4_cec_irq_handler,
    vc4_cec_irq_handler_thread, 0,
    - "vc4 hdmi cec", vc4);
    + "vc4 hdmi cec", vc4_hdmi);
    if (ret)
    goto err_delete_cec_adap;
    ret = cec_register_adapter(vc4_hdmi->cec_adap, dev);
    --
    git-series 0.9.1
    \
     
     \ /
      Last update: 2020-07-08 19:44    [W:4.497 / U:0.656 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site