Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-12-06 Thread Abhinav Kumar




On 12/6/2021 4:21 PM, Dmitry Baryshkov wrote:

On Tue, 7 Dec 2021 at 01:58, Abhinav Kumar  wrote:


Hi Dmitry

On 12/6/2021 2:47 PM, Dmitry Baryshkov wrote:

On Mon, 6 Dec 2021 at 23:42, Abhinav Kumar  wrote:




On 11/25/2021 4:50 AM, Dmitry Baryshkov wrote:

On 19/10/2021 02:54, abhin...@codeaurora.org wrote:

On 2021-10-16 07:21, Dmitry Baryshkov wrote:

On Sat, 16 Oct 2021 at 01:25,  wrote:


Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:

Merge old hdmi_bridge and hdmi_connector implementations. Use
drm_bridge_connector instead.


Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform
which shall use this.


Yes, this has been developed and validated on db820c

Thanks for confirming.





Signed-off-by: Dmitry Baryshkov 
---
   drivers/gpu/drm/msm/Makefile  |   2 +-
   drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
   drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
   drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
   .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154

++

   5 files changed, 109 insertions(+), 159 deletions(-)
   rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c}

(62%)


diff --git a/drivers/gpu/drm/msm/Makefile
b/drivers/gpu/drm/msm/Makefile
index 904535eda0c4..91b09cda8a9c 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -19,7 +19,7 @@ msm-y := \
hdmi/hdmi.o \
hdmi/hdmi_audio.o \
hdmi/hdmi_bridge.o \
- hdmi/hdmi_connector.o \
+ hdmi/hdmi_hpd.o \
hdmi/hdmi_i2c.o \
hdmi/hdmi_phy.o \
hdmi/hdmi_phy_8960.o \
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
b/drivers/gpu/drm/msm/hdmi/hdmi.c
index db17a000d968..d1cf4df7188c 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -8,6 +8,8 @@
   #include 
   #include 

+#include 
+
   #include 
   #include "hdmi.h"

@@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
*dev_id)
struct hdmi *hdmi = dev_id;

/* Process HPD: */
- msm_hdmi_connector_irq(hdmi->connector);
+ msm_hdmi_hpd_irq(hdmi->bridge);

/* Process DDC: */
msm_hdmi_i2c_irq(hdmi->i2c);
@@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

- hdmi->connector = msm_hdmi_connector_init(hdmi);
+ hdmi->connector = drm_bridge_connector_init(hdmi->dev,

encoder);

if (IS_ERR(hdmi->connector)) {
ret = PTR_ERR(hdmi->connector);
DRM_DEV_ERROR(dev->dev, "failed to create HDMI

connector: %d\n",

ret);
@@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

+ drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
+
hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
if (hdmi->irq < 0) {
ret = hdmi->irq;
@@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

- ret = msm_hdmi_hpd_enable(hdmi->connector);
+ drm_bridge_connector_enable_hpd(hdmi->connector);
+
+ ret = msm_hdmi_hpd_enable(hdmi->bridge);
if (ret < 0) {
DRM_DEV_ERROR(>pdev->dev, "failed to enable

HPD: %d\n", ret);

goto fail;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
b/drivers/gpu/drm/msm/hdmi/hdmi.h
index 82261078c6b1..736f348befb3 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.h
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
@@ -114,6 +114,13 @@ struct hdmi_platform_config {
struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
   };

+struct hdmi_bridge {
+ struct drm_bridge base;
+ struct hdmi *hdmi;
+ struct work_struct hpd_work;
+};
+#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
+
   void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);

   static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
@@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
*hdmi, int rate);
   struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
   void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);

-/*
- * hdmi connector:
- */
-
-void msm_hdmi_connector_irq(struct drm_connector *connector);
-struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
-int msm_hdmi_hpd_enable(struct drm_connector *connector);
+void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
+enum drm_connector_status msm_hdmi_bridge_detect(
+ struct drm_bridge *bridge);
+int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
+void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);

   /*
* i2c adapter for ddc:
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index f04eb4a70f0d..211b73dddf65 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -5,17 +5,16 @@
*/

   #include 
+#include 


Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-12-06 Thread Dmitry Baryshkov
On Tue, 7 Dec 2021 at 01:58, Abhinav Kumar  wrote:
>
> Hi Dmitry
>
> On 12/6/2021 2:47 PM, Dmitry Baryshkov wrote:
> > On Mon, 6 Dec 2021 at 23:42, Abhinav Kumar  
> > wrote:
> >>
> >>
> >>
> >> On 11/25/2021 4:50 AM, Dmitry Baryshkov wrote:
> >>> On 19/10/2021 02:54, abhin...@codeaurora.org wrote:
>  On 2021-10-16 07:21, Dmitry Baryshkov wrote:
> > On Sat, 16 Oct 2021 at 01:25,  wrote:
> >>
> >> Hi Dmitry
> >>
> >> On 2021-10-14 17:11, Dmitry Baryshkov wrote:
> >>> Merge old hdmi_bridge and hdmi_connector implementations. Use
> >>> drm_bridge_connector instead.
> >>>
> >> Can you please comment on the validation done on this change?
> >> Has basic bootup been verified on db820c as thats the only platform
> >> which shall use this.
> >
> > Yes, this has been developed and validated on db820c
>  Thanks for confirming.
> >
> >>
> >>> Signed-off-by: Dmitry Baryshkov 
> >>> ---
> >>>   drivers/gpu/drm/msm/Makefile  |   2 +-
> >>>   drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
> >>>   drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
> >>>   drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
> >>>   .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154
> >> ++
> >>>   5 files changed, 109 insertions(+), 159 deletions(-)
> >>>   rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c}
> >> (62%)
> >>>
> >>> diff --git a/drivers/gpu/drm/msm/Makefile
> >>> b/drivers/gpu/drm/msm/Makefile
> >>> index 904535eda0c4..91b09cda8a9c 100644
> >>> --- a/drivers/gpu/drm/msm/Makefile
> >>> +++ b/drivers/gpu/drm/msm/Makefile
> >>> @@ -19,7 +19,7 @@ msm-y := \
> >>>hdmi/hdmi.o \
> >>>hdmi/hdmi_audio.o \
> >>>hdmi/hdmi_bridge.o \
> >>> - hdmi/hdmi_connector.o \
> >>> + hdmi/hdmi_hpd.o \
> >>>hdmi/hdmi_i2c.o \
> >>>hdmi/hdmi_phy.o \
> >>>hdmi/hdmi_phy_8960.o \
> >>> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
> >>> b/drivers/gpu/drm/msm/hdmi/hdmi.c
> >>> index db17a000d968..d1cf4df7188c 100644
> >>> --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> >>> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> >>> @@ -8,6 +8,8 @@
> >>>   #include 
> >>>   #include 
> >>>
> >>> +#include 
> >>> +
> >>>   #include 
> >>>   #include "hdmi.h"
> >>>
> >>> @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
> >>> *dev_id)
> >>>struct hdmi *hdmi = dev_id;
> >>>
> >>>/* Process HPD: */
> >>> - msm_hdmi_connector_irq(hdmi->connector);
> >>> + msm_hdmi_hpd_irq(hdmi->bridge);
> >>>
> >>>/* Process DDC: */
> >>>msm_hdmi_i2c_irq(hdmi->i2c);
> >>> @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >>>goto fail;
> >>>}
> >>>
> >>> - hdmi->connector = msm_hdmi_connector_init(hdmi);
> >>> + hdmi->connector = drm_bridge_connector_init(hdmi->dev,
> >> encoder);
> >>>if (IS_ERR(hdmi->connector)) {
> >>>ret = PTR_ERR(hdmi->connector);
> >>>DRM_DEV_ERROR(dev->dev, "failed to create HDMI
> >> connector: %d\n",
> >>> ret);
> >>> @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >>>goto fail;
> >>>}
> >>>
> >>> + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
> >>> +
> >>>hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
> >>>if (hdmi->irq < 0) {
> >>>ret = hdmi->irq;
> >>> @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >>>goto fail;
> >>>}
> >>>
> >>> - ret = msm_hdmi_hpd_enable(hdmi->connector);
> >>> + drm_bridge_connector_enable_hpd(hdmi->connector);
> >>> +
> >>> + ret = msm_hdmi_hpd_enable(hdmi->bridge);
> >>>if (ret < 0) {
> >>>DRM_DEV_ERROR(>pdev->dev, "failed to enable
> >> HPD: %d\n", ret);
> >>>goto fail;
> >>> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
> >>> b/drivers/gpu/drm/msm/hdmi/hdmi.h
> >>> index 82261078c6b1..736f348befb3 100644
> >>> --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
> >>> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
> >>> @@ -114,6 +114,13 @@ struct hdmi_platform_config {
> >>>struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
> >>>   };
> >>>
> >>> +struct hdmi_bridge {
> >>> + struct drm_bridge base;
> >>> + struct hdmi *hdmi;
> >>> + struct work_struct hpd_work;
> >>> +};
> >>> +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
> >>> +
> >>>   void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
> >>>
> 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-12-06 Thread Abhinav Kumar

Hi Dmitry

On 12/6/2021 2:47 PM, Dmitry Baryshkov wrote:

On Mon, 6 Dec 2021 at 23:42, Abhinav Kumar  wrote:




On 11/25/2021 4:50 AM, Dmitry Baryshkov wrote:

On 19/10/2021 02:54, abhin...@codeaurora.org wrote:

On 2021-10-16 07:21, Dmitry Baryshkov wrote:

On Sat, 16 Oct 2021 at 01:25,  wrote:


Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:

Merge old hdmi_bridge and hdmi_connector implementations. Use
drm_bridge_connector instead.


Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform
which shall use this.


Yes, this has been developed and validated on db820c

Thanks for confirming.





Signed-off-by: Dmitry Baryshkov 
---
  drivers/gpu/drm/msm/Makefile  |   2 +-
  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154

++

  5 files changed, 109 insertions(+), 159 deletions(-)
  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c}

(62%)


diff --git a/drivers/gpu/drm/msm/Makefile
b/drivers/gpu/drm/msm/Makefile
index 904535eda0c4..91b09cda8a9c 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -19,7 +19,7 @@ msm-y := \
   hdmi/hdmi.o \
   hdmi/hdmi_audio.o \
   hdmi/hdmi_bridge.o \
- hdmi/hdmi_connector.o \
+ hdmi/hdmi_hpd.o \
   hdmi/hdmi_i2c.o \
   hdmi/hdmi_phy.o \
   hdmi/hdmi_phy_8960.o \
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
b/drivers/gpu/drm/msm/hdmi/hdmi.c
index db17a000d968..d1cf4df7188c 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -8,6 +8,8 @@
  #include 
  #include 

+#include 
+
  #include 
  #include "hdmi.h"

@@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
*dev_id)
   struct hdmi *hdmi = dev_id;

   /* Process HPD: */
- msm_hdmi_connector_irq(hdmi->connector);
+ msm_hdmi_hpd_irq(hdmi->bridge);

   /* Process DDC: */
   msm_hdmi_i2c_irq(hdmi->i2c);
@@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
   goto fail;
   }

- hdmi->connector = msm_hdmi_connector_init(hdmi);
+ hdmi->connector = drm_bridge_connector_init(hdmi->dev,

encoder);

   if (IS_ERR(hdmi->connector)) {
   ret = PTR_ERR(hdmi->connector);
   DRM_DEV_ERROR(dev->dev, "failed to create HDMI

connector: %d\n",

ret);
@@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
   goto fail;
   }

+ drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
+
   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
   if (hdmi->irq < 0) {
   ret = hdmi->irq;
@@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
   goto fail;
   }

- ret = msm_hdmi_hpd_enable(hdmi->connector);
+ drm_bridge_connector_enable_hpd(hdmi->connector);
+
+ ret = msm_hdmi_hpd_enable(hdmi->bridge);
   if (ret < 0) {
   DRM_DEV_ERROR(>pdev->dev, "failed to enable

HPD: %d\n", ret);

   goto fail;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
b/drivers/gpu/drm/msm/hdmi/hdmi.h
index 82261078c6b1..736f348befb3 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.h
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
@@ -114,6 +114,13 @@ struct hdmi_platform_config {
   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
  };

+struct hdmi_bridge {
+ struct drm_bridge base;
+ struct hdmi *hdmi;
+ struct work_struct hpd_work;
+};
+#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
+
  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);

  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
@@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
*hdmi, int rate);
  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);

-/*
- * hdmi connector:
- */
-
-void msm_hdmi_connector_irq(struct drm_connector *connector);
-struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
-int msm_hdmi_hpd_enable(struct drm_connector *connector);
+void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
+enum drm_connector_status msm_hdmi_bridge_detect(
+ struct drm_bridge *bridge);
+int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
+void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);

  /*
   * i2c adapter for ddc:
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index f04eb4a70f0d..211b73dddf65 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -5,17 +5,16 @@
   */

  #include 
+#include 

+#include "msm_kms.h"
  #include "hdmi.h"

-struct hdmi_bridge {
- struct drm_bridge base;
- struct hdmi *hdmi;
-};
-#define 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-12-06 Thread Dmitry Baryshkov
On Mon, 6 Dec 2021 at 23:42, Abhinav Kumar  wrote:
>
>
>
> On 11/25/2021 4:50 AM, Dmitry Baryshkov wrote:
> > On 19/10/2021 02:54, abhin...@codeaurora.org wrote:
> >> On 2021-10-16 07:21, Dmitry Baryshkov wrote:
> >>> On Sat, 16 Oct 2021 at 01:25,  wrote:
> 
>  Hi Dmitry
> 
>  On 2021-10-14 17:11, Dmitry Baryshkov wrote:
>  > Merge old hdmi_bridge and hdmi_connector implementations. Use
>  > drm_bridge_connector instead.
>  >
>  Can you please comment on the validation done on this change?
>  Has basic bootup been verified on db820c as thats the only platform
>  which shall use this.
> >>>
> >>> Yes, this has been developed and validated on db820c
> >> Thanks for confirming.
> >>>
> 
>  > Signed-off-by: Dmitry Baryshkov 
>  > ---
>  >  drivers/gpu/drm/msm/Makefile  |   2 +-
>  >  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
>  >  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
>  >  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
>  >  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154
>  ++
>  >  5 files changed, 109 insertions(+), 159 deletions(-)
>  >  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c}
>  (62%)
>  >
>  > diff --git a/drivers/gpu/drm/msm/Makefile
>  > b/drivers/gpu/drm/msm/Makefile
>  > index 904535eda0c4..91b09cda8a9c 100644
>  > --- a/drivers/gpu/drm/msm/Makefile
>  > +++ b/drivers/gpu/drm/msm/Makefile
>  > @@ -19,7 +19,7 @@ msm-y := \
>  >   hdmi/hdmi.o \
>  >   hdmi/hdmi_audio.o \
>  >   hdmi/hdmi_bridge.o \
>  > - hdmi/hdmi_connector.o \
>  > + hdmi/hdmi_hpd.o \
>  >   hdmi/hdmi_i2c.o \
>  >   hdmi/hdmi_phy.o \
>  >   hdmi/hdmi_phy_8960.o \
>  > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
>  > b/drivers/gpu/drm/msm/hdmi/hdmi.c
>  > index db17a000d968..d1cf4df7188c 100644
>  > --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
>  > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
>  > @@ -8,6 +8,8 @@
>  >  #include 
>  >  #include 
>  >
>  > +#include 
>  > +
>  >  #include 
>  >  #include "hdmi.h"
>  >
>  > @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
>  > *dev_id)
>  >   struct hdmi *hdmi = dev_id;
>  >
>  >   /* Process HPD: */
>  > - msm_hdmi_connector_irq(hdmi->connector);
>  > + msm_hdmi_hpd_irq(hdmi->bridge);
>  >
>  >   /* Process DDC: */
>  >   msm_hdmi_i2c_irq(hdmi->i2c);
>  > @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>  >   goto fail;
>  >   }
>  >
>  > - hdmi->connector = msm_hdmi_connector_init(hdmi);
>  > + hdmi->connector = drm_bridge_connector_init(hdmi->dev,
>  encoder);
>  >   if (IS_ERR(hdmi->connector)) {
>  >   ret = PTR_ERR(hdmi->connector);
>  >   DRM_DEV_ERROR(dev->dev, "failed to create HDMI
>  connector: %d\n",
>  > ret);
>  > @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>  >   goto fail;
>  >   }
>  >
>  > + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
>  > +
>  >   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
>  >   if (hdmi->irq < 0) {
>  >   ret = hdmi->irq;
>  > @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>  >   goto fail;
>  >   }
>  >
>  > - ret = msm_hdmi_hpd_enable(hdmi->connector);
>  > + drm_bridge_connector_enable_hpd(hdmi->connector);
>  > +
>  > + ret = msm_hdmi_hpd_enable(hdmi->bridge);
>  >   if (ret < 0) {
>  >   DRM_DEV_ERROR(>pdev->dev, "failed to enable
>  HPD: %d\n", ret);
>  >   goto fail;
>  > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
>  > b/drivers/gpu/drm/msm/hdmi/hdmi.h
>  > index 82261078c6b1..736f348befb3 100644
>  > --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
>  > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
>  > @@ -114,6 +114,13 @@ struct hdmi_platform_config {
>  >   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
>  >  };
>  >
>  > +struct hdmi_bridge {
>  > + struct drm_bridge base;
>  > + struct hdmi *hdmi;
>  > + struct work_struct hpd_work;
>  > +};
>  > +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
>  > +
>  >  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
>  >
>  >  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
>  > @@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
>  > *hdmi, int rate);
>  >  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
>  >  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-12-06 Thread Abhinav Kumar




On 11/25/2021 4:50 AM, Dmitry Baryshkov wrote:

On 19/10/2021 02:54, abhin...@codeaurora.org wrote:

On 2021-10-16 07:21, Dmitry Baryshkov wrote:

On Sat, 16 Oct 2021 at 01:25,  wrote:


Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:
> Merge old hdmi_bridge and hdmi_connector implementations. Use
> drm_bridge_connector instead.
>
Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform
which shall use this.


Yes, this has been developed and validated on db820c

Thanks for confirming.




> Signed-off-by: Dmitry Baryshkov 
> ---
>  drivers/gpu/drm/msm/Makefile  |   2 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c    |  81 -
>  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 
++

>  5 files changed, 109 insertions(+), 159 deletions(-)
>  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} 
(62%)

>
> diff --git a/drivers/gpu/drm/msm/Makefile
> b/drivers/gpu/drm/msm/Makefile
> index 904535eda0c4..91b09cda8a9c 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -19,7 +19,7 @@ msm-y := \
>   hdmi/hdmi.o \
>   hdmi/hdmi_audio.o \
>   hdmi/hdmi_bridge.o \
> - hdmi/hdmi_connector.o \
> + hdmi/hdmi_hpd.o \
>   hdmi/hdmi_i2c.o \
>   hdmi/hdmi_phy.o \
>   hdmi/hdmi_phy_8960.o \
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
> b/drivers/gpu/drm/msm/hdmi/hdmi.c
> index db17a000d968..d1cf4df7188c 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> @@ -8,6 +8,8 @@
>  #include 
>  #include 
>
> +#include 
> +
>  #include 
>  #include "hdmi.h"
>
> @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
> *dev_id)
>   struct hdmi *hdmi = dev_id;
>
>   /* Process HPD: */
> - msm_hdmi_connector_irq(hdmi->connector);
> + msm_hdmi_hpd_irq(hdmi->bridge);
>
>   /* Process DDC: */
>   msm_hdmi_i2c_irq(hdmi->i2c);
> @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - hdmi->connector = msm_hdmi_connector_init(hdmi);
> + hdmi->connector = drm_bridge_connector_init(hdmi->dev, 
encoder);

>   if (IS_ERR(hdmi->connector)) {
>   ret = PTR_ERR(hdmi->connector);
>   DRM_DEV_ERROR(dev->dev, "failed to create HDMI 
connector: %d\n",

> ret);
> @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
> +
>   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
>   if (hdmi->irq < 0) {
>   ret = hdmi->irq;
> @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - ret = msm_hdmi_hpd_enable(hdmi->connector);
> + drm_bridge_connector_enable_hpd(hdmi->connector);
> +
> + ret = msm_hdmi_hpd_enable(hdmi->bridge);
>   if (ret < 0) {
>   DRM_DEV_ERROR(>pdev->dev, "failed to enable 
HPD: %d\n", ret);

>   goto fail;
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
> b/drivers/gpu/drm/msm/hdmi/hdmi.h
> index 82261078c6b1..736f348befb3 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
> @@ -114,6 +114,13 @@ struct hdmi_platform_config {
>   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
>  };
>
> +struct hdmi_bridge {
> + struct drm_bridge base;
> + struct hdmi *hdmi;
> + struct work_struct hpd_work;
> +};
> +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
> +
>  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
>
>  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
> @@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
> *hdmi, int rate);
>  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
>  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);
>
> -/*
> - * hdmi connector:
> - */
> -
> -void msm_hdmi_connector_irq(struct drm_connector *connector);
> -struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
> -int msm_hdmi_hpd_enable(struct drm_connector *connector);
> +void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
> +enum drm_connector_status msm_hdmi_bridge_detect(
> + struct drm_bridge *bridge);
> +int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
> +void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);
>
>  /*
>   * i2c adapter for ddc:
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> index f04eb4a70f0d..211b73dddf65 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> @@ -5,17 +5,16 @@
>   */
>
>  #include 
> +#include 
>
> +#include "msm_kms.h"
>  #include "hdmi.h"
>
> -struct 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-11-25 Thread Dmitry Baryshkov

On 19/10/2021 02:54, abhin...@codeaurora.org wrote:

On 2021-10-16 07:21, Dmitry Baryshkov wrote:

On Sat, 16 Oct 2021 at 01:25,  wrote:


Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:
> Merge old hdmi_bridge and hdmi_connector implementations. Use
> drm_bridge_connector instead.
>
Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform
which shall use this.


Yes, this has been developed and validated on db820c

Thanks for confirming.




> Signed-off-by: Dmitry Baryshkov 
> ---
>  drivers/gpu/drm/msm/Makefile  |   2 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c    |  81 -
>  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 
++

>  5 files changed, 109 insertions(+), 159 deletions(-)
>  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} 
(62%)

>
> diff --git a/drivers/gpu/drm/msm/Makefile
> b/drivers/gpu/drm/msm/Makefile
> index 904535eda0c4..91b09cda8a9c 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -19,7 +19,7 @@ msm-y := \
>   hdmi/hdmi.o \
>   hdmi/hdmi_audio.o \
>   hdmi/hdmi_bridge.o \
> - hdmi/hdmi_connector.o \
> + hdmi/hdmi_hpd.o \
>   hdmi/hdmi_i2c.o \
>   hdmi/hdmi_phy.o \
>   hdmi/hdmi_phy_8960.o \
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
> b/drivers/gpu/drm/msm/hdmi/hdmi.c
> index db17a000d968..d1cf4df7188c 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> @@ -8,6 +8,8 @@
>  #include 
>  #include 
>
> +#include 
> +
>  #include 
>  #include "hdmi.h"
>
> @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
> *dev_id)
>   struct hdmi *hdmi = dev_id;
>
>   /* Process HPD: */
> - msm_hdmi_connector_irq(hdmi->connector);
> + msm_hdmi_hpd_irq(hdmi->bridge);
>
>   /* Process DDC: */
>   msm_hdmi_i2c_irq(hdmi->i2c);
> @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - hdmi->connector = msm_hdmi_connector_init(hdmi);
> + hdmi->connector = drm_bridge_connector_init(hdmi->dev, encoder);
>   if (IS_ERR(hdmi->connector)) {
>   ret = PTR_ERR(hdmi->connector);
>   DRM_DEV_ERROR(dev->dev, "failed to create HDMI 
connector: %d\n",

> ret);
> @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
> +
>   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
>   if (hdmi->irq < 0) {
>   ret = hdmi->irq;
> @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - ret = msm_hdmi_hpd_enable(hdmi->connector);
> + drm_bridge_connector_enable_hpd(hdmi->connector);
> +
> + ret = msm_hdmi_hpd_enable(hdmi->bridge);
>   if (ret < 0) {
>   DRM_DEV_ERROR(>pdev->dev, "failed to enable 
HPD: %d\n", ret);

>   goto fail;
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
> b/drivers/gpu/drm/msm/hdmi/hdmi.h
> index 82261078c6b1..736f348befb3 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
> @@ -114,6 +114,13 @@ struct hdmi_platform_config {
>   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
>  };
>
> +struct hdmi_bridge {
> + struct drm_bridge base;
> + struct hdmi *hdmi;
> + struct work_struct hpd_work;
> +};
> +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
> +
>  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
>
>  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
> @@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
> *hdmi, int rate);
>  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
>  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);
>
> -/*
> - * hdmi connector:
> - */
> -
> -void msm_hdmi_connector_irq(struct drm_connector *connector);
> -struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
> -int msm_hdmi_hpd_enable(struct drm_connector *connector);
> +void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
> +enum drm_connector_status msm_hdmi_bridge_detect(
> + struct drm_bridge *bridge);
> +int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
> +void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);
>
>  /*
>   * i2c adapter for ddc:
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> index f04eb4a70f0d..211b73dddf65 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> @@ -5,17 +5,16 @@
>   */
>
>  #include 
> +#include 
>
> +#include "msm_kms.h"
>  #include "hdmi.h"
>
> -struct hdmi_bridge {
> - struct drm_bridge base;
> - 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-10-18 Thread abhinavk

On 2021-10-16 07:21, Dmitry Baryshkov wrote:

On Sat, 16 Oct 2021 at 01:25,  wrote:


Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:
> Merge old hdmi_bridge and hdmi_connector implementations. Use
> drm_bridge_connector instead.
>
Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform
which shall use this.


Yes, this has been developed and validated on db820c

Thanks for confirming.




> Signed-off-by: Dmitry Baryshkov 
> ---
>  drivers/gpu/drm/msm/Makefile  |   2 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
>  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
>  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 ++
>  5 files changed, 109 insertions(+), 159 deletions(-)
>  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} (62%)
>
> diff --git a/drivers/gpu/drm/msm/Makefile
> b/drivers/gpu/drm/msm/Makefile
> index 904535eda0c4..91b09cda8a9c 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -19,7 +19,7 @@ msm-y := \
>   hdmi/hdmi.o \
>   hdmi/hdmi_audio.o \
>   hdmi/hdmi_bridge.o \
> - hdmi/hdmi_connector.o \
> + hdmi/hdmi_hpd.o \
>   hdmi/hdmi_i2c.o \
>   hdmi/hdmi_phy.o \
>   hdmi/hdmi_phy_8960.o \
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
> b/drivers/gpu/drm/msm/hdmi/hdmi.c
> index db17a000d968..d1cf4df7188c 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> @@ -8,6 +8,8 @@
>  #include 
>  #include 
>
> +#include 
> +
>  #include 
>  #include "hdmi.h"
>
> @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
> *dev_id)
>   struct hdmi *hdmi = dev_id;
>
>   /* Process HPD: */
> - msm_hdmi_connector_irq(hdmi->connector);
> + msm_hdmi_hpd_irq(hdmi->bridge);
>
>   /* Process DDC: */
>   msm_hdmi_i2c_irq(hdmi->i2c);
> @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - hdmi->connector = msm_hdmi_connector_init(hdmi);
> + hdmi->connector = drm_bridge_connector_init(hdmi->dev, encoder);
>   if (IS_ERR(hdmi->connector)) {
>   ret = PTR_ERR(hdmi->connector);
>   DRM_DEV_ERROR(dev->dev, "failed to create HDMI connector: %d\n",
> ret);
> @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
> +
>   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
>   if (hdmi->irq < 0) {
>   ret = hdmi->irq;
> @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
>   goto fail;
>   }
>
> - ret = msm_hdmi_hpd_enable(hdmi->connector);
> + drm_bridge_connector_enable_hpd(hdmi->connector);
> +
> + ret = msm_hdmi_hpd_enable(hdmi->bridge);
>   if (ret < 0) {
>   DRM_DEV_ERROR(>pdev->dev, "failed to enable HPD: %d\n", 
ret);
>   goto fail;
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
> b/drivers/gpu/drm/msm/hdmi/hdmi.h
> index 82261078c6b1..736f348befb3 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
> @@ -114,6 +114,13 @@ struct hdmi_platform_config {
>   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
>  };
>
> +struct hdmi_bridge {
> + struct drm_bridge base;
> + struct hdmi *hdmi;
> + struct work_struct hpd_work;
> +};
> +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
> +
>  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
>
>  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
> @@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
> *hdmi, int rate);
>  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
>  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);
>
> -/*
> - * hdmi connector:
> - */
> -
> -void msm_hdmi_connector_irq(struct drm_connector *connector);
> -struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
> -int msm_hdmi_hpd_enable(struct drm_connector *connector);
> +void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
> +enum drm_connector_status msm_hdmi_bridge_detect(
> + struct drm_bridge *bridge);
> +int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
> +void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);
>
>  /*
>   * i2c adapter for ddc:
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> index f04eb4a70f0d..211b73dddf65 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> @@ -5,17 +5,16 @@
>   */
>
>  #include 
> +#include 
>
> +#include "msm_kms.h"
>  #include "hdmi.h"
>
> -struct hdmi_bridge {
> - struct drm_bridge base;
> - struct hdmi *hdmi;
> -};
> -#define to_hdmi_bridge(x) 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-10-16 Thread Dmitry Baryshkov
On Sat, 16 Oct 2021 at 01:25,  wrote:
>
> Hi Dmitry
>
> On 2021-10-14 17:11, Dmitry Baryshkov wrote:
> > Merge old hdmi_bridge and hdmi_connector implementations. Use
> > drm_bridge_connector instead.
> >
> Can you please comment on the validation done on this change?
> Has basic bootup been verified on db820c as thats the only platform
> which shall use this.

Yes, this has been developed and validated on db820c

>
> > Signed-off-by: Dmitry Baryshkov 
> > ---
> >  drivers/gpu/drm/msm/Makefile  |   2 +-
> >  drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
> >  drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
> >  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
> >  .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 ++
> >  5 files changed, 109 insertions(+), 159 deletions(-)
> >  rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} (62%)
> >
> > diff --git a/drivers/gpu/drm/msm/Makefile
> > b/drivers/gpu/drm/msm/Makefile
> > index 904535eda0c4..91b09cda8a9c 100644
> > --- a/drivers/gpu/drm/msm/Makefile
> > +++ b/drivers/gpu/drm/msm/Makefile
> > @@ -19,7 +19,7 @@ msm-y := \
> >   hdmi/hdmi.o \
> >   hdmi/hdmi_audio.o \
> >   hdmi/hdmi_bridge.o \
> > - hdmi/hdmi_connector.o \
> > + hdmi/hdmi_hpd.o \
> >   hdmi/hdmi_i2c.o \
> >   hdmi/hdmi_phy.o \
> >   hdmi/hdmi_phy_8960.o \
> > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c
> > b/drivers/gpu/drm/msm/hdmi/hdmi.c
> > index db17a000d968..d1cf4df7188c 100644
> > --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> > @@ -8,6 +8,8 @@
> >  #include 
> >  #include 
> >
> > +#include 
> > +
> >  #include 
> >  #include "hdmi.h"
> >
> > @@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void
> > *dev_id)
> >   struct hdmi *hdmi = dev_id;
> >
> >   /* Process HPD: */
> > - msm_hdmi_connector_irq(hdmi->connector);
> > + msm_hdmi_hpd_irq(hdmi->bridge);
> >
> >   /* Process DDC: */
> >   msm_hdmi_i2c_irq(hdmi->i2c);
> > @@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >   goto fail;
> >   }
> >
> > - hdmi->connector = msm_hdmi_connector_init(hdmi);
> > + hdmi->connector = drm_bridge_connector_init(hdmi->dev, encoder);
> >   if (IS_ERR(hdmi->connector)) {
> >   ret = PTR_ERR(hdmi->connector);
> >   DRM_DEV_ERROR(dev->dev, "failed to create HDMI connector: 
> > %d\n",
> > ret);
> > @@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >   goto fail;
> >   }
> >
> > + drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
> > +
> >   hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
> >   if (hdmi->irq < 0) {
> >   ret = hdmi->irq;
> > @@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
> >   goto fail;
> >   }
> >
> > - ret = msm_hdmi_hpd_enable(hdmi->connector);
> > + drm_bridge_connector_enable_hpd(hdmi->connector);
> > +
> > + ret = msm_hdmi_hpd_enable(hdmi->bridge);
> >   if (ret < 0) {
> >   DRM_DEV_ERROR(>pdev->dev, "failed to enable HPD: %d\n", 
> > ret);
> >   goto fail;
> > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h
> > b/drivers/gpu/drm/msm/hdmi/hdmi.h
> > index 82261078c6b1..736f348befb3 100644
> > --- a/drivers/gpu/drm/msm/hdmi/hdmi.h
> > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
> > @@ -114,6 +114,13 @@ struct hdmi_platform_config {
> >   struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
> >  };
> >
> > +struct hdmi_bridge {
> > + struct drm_bridge base;
> > + struct hdmi *hdmi;
> > + struct work_struct hpd_work;
> > +};
> > +#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
> > +
> >  void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);
> >
> >  static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
> > @@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
> > *hdmi, int rate);
> >  struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
> >  void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);
> >
> > -/*
> > - * hdmi connector:
> > - */
> > -
> > -void msm_hdmi_connector_irq(struct drm_connector *connector);
> > -struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
> > -int msm_hdmi_hpd_enable(struct drm_connector *connector);
> > +void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
> > +enum drm_connector_status msm_hdmi_bridge_detect(
> > + struct drm_bridge *bridge);
> > +int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
> > +void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);
> >
> >  /*
> >   * i2c adapter for ddc:
> > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> > b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> > index f04eb4a70f0d..211b73dddf65 100644
> > --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> > +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> > @@ -5,17 +5,16 @@
> >   */
> 

Re: [Freedreno] [PATCH 2/2] drm/msm/hdmi: switch to drm_bridge_connector

2021-10-15 Thread abhinavk

Hi Dmitry

On 2021-10-14 17:11, Dmitry Baryshkov wrote:

Merge old hdmi_bridge and hdmi_connector implementations. Use
drm_bridge_connector instead.


Can you please comment on the validation done on this change?
Has basic bootup been verified on db820c as thats the only platform 
which shall use this.



Signed-off-by: Dmitry Baryshkov 
---
 drivers/gpu/drm/msm/Makefile  |   2 +-
 drivers/gpu/drm/msm/hdmi/hdmi.c   |  12 +-
 drivers/gpu/drm/msm/hdmi/hdmi.h   |  19 ++-
 drivers/gpu/drm/msm/hdmi/hdmi_bridge.c|  81 -
 .../msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 ++
 5 files changed, 109 insertions(+), 159 deletions(-)
 rename drivers/gpu/drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} (62%)

diff --git a/drivers/gpu/drm/msm/Makefile 
b/drivers/gpu/drm/msm/Makefile

index 904535eda0c4..91b09cda8a9c 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -19,7 +19,7 @@ msm-y := \
hdmi/hdmi.o \
hdmi/hdmi_audio.o \
hdmi/hdmi_bridge.o \
-   hdmi/hdmi_connector.o \
+   hdmi/hdmi_hpd.o \
hdmi/hdmi_i2c.o \
hdmi/hdmi_phy.o \
hdmi/hdmi_phy_8960.o \
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c 
b/drivers/gpu/drm/msm/hdmi/hdmi.c

index db17a000d968..d1cf4df7188c 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -8,6 +8,8 @@
 #include 
 #include 

+#include 
+
 #include 
 #include "hdmi.h"

@@ -41,7 +43,7 @@ static irqreturn_t msm_hdmi_irq(int irq, void 
*dev_id)

struct hdmi *hdmi = dev_id;

/* Process HPD: */
-   msm_hdmi_connector_irq(hdmi->connector);
+   msm_hdmi_hpd_irq(hdmi->bridge);

/* Process DDC: */
msm_hdmi_i2c_irq(hdmi->i2c);
@@ -283,7 +285,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

-   hdmi->connector = msm_hdmi_connector_init(hdmi);
+   hdmi->connector = drm_bridge_connector_init(hdmi->dev, encoder);
if (IS_ERR(hdmi->connector)) {
ret = PTR_ERR(hdmi->connector);
 		DRM_DEV_ERROR(dev->dev, "failed to create HDMI connector: %d\n", 
ret);

@@ -291,6 +293,8 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

+   drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
+
hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
if (hdmi->irq < 0) {
ret = hdmi->irq;
@@ -307,7 +311,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
goto fail;
}

-   ret = msm_hdmi_hpd_enable(hdmi->connector);
+   drm_bridge_connector_enable_hpd(hdmi->connector);
+
+   ret = msm_hdmi_hpd_enable(hdmi->bridge);
if (ret < 0) {
DRM_DEV_ERROR(>pdev->dev, "failed to enable HPD: %d\n", 
ret);
goto fail;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h 
b/drivers/gpu/drm/msm/hdmi/hdmi.h

index 82261078c6b1..736f348befb3 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.h
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.h
@@ -114,6 +114,13 @@ struct hdmi_platform_config {
struct hdmi_gpio_data gpios[HDMI_MAX_NUM_GPIO];
 };

+struct hdmi_bridge {
+   struct drm_bridge base;
+   struct hdmi *hdmi;
+   struct work_struct hpd_work;
+};
+#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
+
 void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on);

 static inline void hdmi_write(struct hdmi *hdmi, u32 reg, u32 data)
@@ -230,13 +237,11 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi
*hdmi, int rate);
 struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi);
 void msm_hdmi_bridge_destroy(struct drm_bridge *bridge);

-/*
- * hdmi connector:
- */
-
-void msm_hdmi_connector_irq(struct drm_connector *connector);
-struct drm_connector *msm_hdmi_connector_init(struct hdmi *hdmi);
-int msm_hdmi_hpd_enable(struct drm_connector *connector);
+void msm_hdmi_hpd_irq(struct drm_bridge *bridge);
+enum drm_connector_status msm_hdmi_bridge_detect(
+   struct drm_bridge *bridge);
+int msm_hdmi_hpd_enable(struct drm_bridge *bridge);
+void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge);

 /*
  * i2c adapter for ddc:
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index f04eb4a70f0d..211b73dddf65 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -5,17 +5,16 @@
  */

 #include 
+#include 

+#include "msm_kms.h"
 #include "hdmi.h"

-struct hdmi_bridge {
-   struct drm_bridge base;
-   struct hdmi *hdmi;
-};
-#define to_hdmi_bridge(x) container_of(x, struct hdmi_bridge, base)
-
 void msm_hdmi_bridge_destroy(struct drm_bridge *bridge)
 {
+   struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
+
+   msm_hdmi_hpd_disable(hdmi_bridge);
 }

 static void msm_hdmi_power_on(struct drm_bridge *bridge)
@@ -251,14 +250,76 @@ static void msm_hdmi_bridge_mode_set(struct