Re: [PATCH v3 13/21] drm/bridge: megachips: add helper to create connector

2020-07-26 Thread Sam Ravnborg
On Sat, Jul 11, 2020 at 01:34:30AM +0300, Laurent Pinchart wrote:
> Hi Sam,
> 
> Thank you for the patch.
> 
> On Fri, Jul 03, 2020 at 09:24:09PM +0200, Sam Ravnborg wrote:
> > Factor out connector creation to a small helper function.
> > 
> > Signed-off-by: Sam Ravnborg 
> > Cc: Peter Senna Tschudin 
> > Cc: Martin Donnelly 
> > Cc: Martyn Welch 
> > Cc: Andrzej Hajda 
> > Cc: Neil Armstrong 
> > Cc: Laurent Pinchart 
> > Cc: Jonas Karlman 
> > Cc: Jernej Skrabec 
> > ---
> >  .../bridge/megachips-stdp-ge-b850v3-fw.c  | 47 +++
> >  1 file changed, 27 insertions(+), 20 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c 
> > b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> > index 6200f12a37e6..258e0525cdcc 100644
> > --- a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> > +++ b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> > @@ -191,6 +191,32 @@ static const struct drm_connector_funcs 
> > ge_b850v3_lvds_connector_funcs = {
> > .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> >  };
> >  
> > +static int ge_b850v3_lvds_create_connector(struct drm_bridge *bridge)
> > +{
> > +   struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;
> 
> Wow, storing device state in a global variable... :-( How did this go
> past review ?
Took a short look at eliminating this.
But there are two module entries involved so I droppet it again.

> 
> Reviewed-by: Laurent Pinchart 
> 
> > +   int ret;
> > +
> > +   if (!bridge->encoder) {
> > +   DRM_ERROR("Parent encoder object not found");
> > +   return -ENODEV;
> > +   }
> > +
> > +   connector->polled = DRM_CONNECTOR_POLL_HPD;
> > +
> > +   drm_connector_helper_add(connector,
> > +&ge_b850v3_lvds_connector_helper_funcs);
> > +
> > +   ret = drm_connector_init(bridge->dev, connector,
> > +&ge_b850v3_lvds_connector_funcs,
> > +DRM_MODE_CONNECTOR_DisplayPort);
> > +   if (ret) {
> > +   DRM_ERROR("Failed to initialize connector with drm\n");
> > +   return ret;
> > +   }
> > +
> > +   return drm_connector_attach_encoder(connector, bridge->encoder);
> > +}
> > +
> >  static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, void *dev_id)
> >  {
> > struct i2c_client *stdp4028_i2c
> > @@ -209,7 +235,6 @@ static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, 
> > void *dev_id)
> >  static int ge_b850v3_lvds_attach(struct drm_bridge *bridge,
> >  enum drm_bridge_attach_flags flags)
> >  {
> > -   struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;
> > struct i2c_client *stdp4028_i2c
> > = ge_b850v3_lvds_ptr->stdp4028_i2c;
> > int ret;
> > @@ -219,25 +244,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge 
> > *bridge,
> > return -EINVAL;
> > }
> >  
> > -   if (!bridge->encoder) {
> > -   DRM_ERROR("Parent encoder object not found");
> > -   return -ENODEV;
> > -   }
> > -
> > -   connector->polled = DRM_CONNECTOR_POLL_HPD;
> > -
> > -   drm_connector_helper_add(connector,
> > -&ge_b850v3_lvds_connector_helper_funcs);
> > -
> > -   ret = drm_connector_init(bridge->dev, connector,
> > -&ge_b850v3_lvds_connector_funcs,
> > -DRM_MODE_CONNECTOR_DisplayPort);
> > -   if (ret) {
> > -   DRM_ERROR("Failed to initialize connector with drm\n");
> > -   return ret;
> > -   }
> > -
> > -   ret = drm_connector_attach_encoder(connector, bridge->encoder);
> > +   ret = ge_b850v3_lvds_create_connector(bridge);
> > if (ret)
> > return ret;
> >  
> 
> -- 
> Regards,
> 
> Laurent Pinchart
> ___
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v3 13/21] drm/bridge: megachips: add helper to create connector

2020-07-10 Thread Laurent Pinchart
Hi Sam,

Thank you for the patch.

On Fri, Jul 03, 2020 at 09:24:09PM +0200, Sam Ravnborg wrote:
> Factor out connector creation to a small helper function.
> 
> Signed-off-by: Sam Ravnborg 
> Cc: Peter Senna Tschudin 
> Cc: Martin Donnelly 
> Cc: Martyn Welch 
> Cc: Andrzej Hajda 
> Cc: Neil Armstrong 
> Cc: Laurent Pinchart 
> Cc: Jonas Karlman 
> Cc: Jernej Skrabec 
> ---
>  .../bridge/megachips-stdp-ge-b850v3-fw.c  | 47 +++
>  1 file changed, 27 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c 
> b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> index 6200f12a37e6..258e0525cdcc 100644
> --- a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> +++ b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
> @@ -191,6 +191,32 @@ static const struct drm_connector_funcs 
> ge_b850v3_lvds_connector_funcs = {
>   .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>  
> +static int ge_b850v3_lvds_create_connector(struct drm_bridge *bridge)
> +{
> + struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;

Wow, storing device state in a global variable... :-( How did this go
past review ?

Reviewed-by: Laurent Pinchart 

> + int ret;
> +
> + if (!bridge->encoder) {
> + DRM_ERROR("Parent encoder object not found");
> + return -ENODEV;
> + }
> +
> + connector->polled = DRM_CONNECTOR_POLL_HPD;
> +
> + drm_connector_helper_add(connector,
> +  &ge_b850v3_lvds_connector_helper_funcs);
> +
> + ret = drm_connector_init(bridge->dev, connector,
> +  &ge_b850v3_lvds_connector_funcs,
> +  DRM_MODE_CONNECTOR_DisplayPort);
> + if (ret) {
> + DRM_ERROR("Failed to initialize connector with drm\n");
> + return ret;
> + }
> +
> + return drm_connector_attach_encoder(connector, bridge->encoder);
> +}
> +
>  static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, void *dev_id)
>  {
>   struct i2c_client *stdp4028_i2c
> @@ -209,7 +235,6 @@ static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, 
> void *dev_id)
>  static int ge_b850v3_lvds_attach(struct drm_bridge *bridge,
>enum drm_bridge_attach_flags flags)
>  {
> - struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;
>   struct i2c_client *stdp4028_i2c
>   = ge_b850v3_lvds_ptr->stdp4028_i2c;
>   int ret;
> @@ -219,25 +244,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge 
> *bridge,
>   return -EINVAL;
>   }
>  
> - if (!bridge->encoder) {
> - DRM_ERROR("Parent encoder object not found");
> - return -ENODEV;
> - }
> -
> - connector->polled = DRM_CONNECTOR_POLL_HPD;
> -
> - drm_connector_helper_add(connector,
> -  &ge_b850v3_lvds_connector_helper_funcs);
> -
> - ret = drm_connector_init(bridge->dev, connector,
> -  &ge_b850v3_lvds_connector_funcs,
> -  DRM_MODE_CONNECTOR_DisplayPort);
> - if (ret) {
> - DRM_ERROR("Failed to initialize connector with drm\n");
> - return ret;
> - }
> -
> - ret = drm_connector_attach_encoder(connector, bridge->encoder);
> + ret = ge_b850v3_lvds_create_connector(bridge);
>   if (ret)
>   return ret;
>  

-- 
Regards,

Laurent Pinchart
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v3 13/21] drm/bridge: megachips: add helper to create connector

2020-07-03 Thread Sam Ravnborg
Factor out connector creation to a small helper function.

Signed-off-by: Sam Ravnborg 
Cc: Peter Senna Tschudin 
Cc: Martin Donnelly 
Cc: Martyn Welch 
Cc: Andrzej Hajda 
Cc: Neil Armstrong 
Cc: Laurent Pinchart 
Cc: Jonas Karlman 
Cc: Jernej Skrabec 
---
 .../bridge/megachips-stdp-ge-b850v3-fw.c  | 47 +++
 1 file changed, 27 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c 
b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
index 6200f12a37e6..258e0525cdcc 100644
--- a/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdp-ge-b850v3-fw.c
@@ -191,6 +191,32 @@ static const struct drm_connector_funcs 
ge_b850v3_lvds_connector_funcs = {
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
+static int ge_b850v3_lvds_create_connector(struct drm_bridge *bridge)
+{
+   struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;
+   int ret;
+
+   if (!bridge->encoder) {
+   DRM_ERROR("Parent encoder object not found");
+   return -ENODEV;
+   }
+
+   connector->polled = DRM_CONNECTOR_POLL_HPD;
+
+   drm_connector_helper_add(connector,
+&ge_b850v3_lvds_connector_helper_funcs);
+
+   ret = drm_connector_init(bridge->dev, connector,
+&ge_b850v3_lvds_connector_funcs,
+DRM_MODE_CONNECTOR_DisplayPort);
+   if (ret) {
+   DRM_ERROR("Failed to initialize connector with drm\n");
+   return ret;
+   }
+
+   return drm_connector_attach_encoder(connector, bridge->encoder);
+}
+
 static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, void *dev_id)
 {
struct i2c_client *stdp4028_i2c
@@ -209,7 +235,6 @@ static irqreturn_t ge_b850v3_lvds_irq_handler(int irq, void 
*dev_id)
 static int ge_b850v3_lvds_attach(struct drm_bridge *bridge,
 enum drm_bridge_attach_flags flags)
 {
-   struct drm_connector *connector = &ge_b850v3_lvds_ptr->connector;
struct i2c_client *stdp4028_i2c
= ge_b850v3_lvds_ptr->stdp4028_i2c;
int ret;
@@ -219,25 +244,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge *bridge,
return -EINVAL;
}
 
-   if (!bridge->encoder) {
-   DRM_ERROR("Parent encoder object not found");
-   return -ENODEV;
-   }
-
-   connector->polled = DRM_CONNECTOR_POLL_HPD;
-
-   drm_connector_helper_add(connector,
-&ge_b850v3_lvds_connector_helper_funcs);
-
-   ret = drm_connector_init(bridge->dev, connector,
-&ge_b850v3_lvds_connector_funcs,
-DRM_MODE_CONNECTOR_DisplayPort);
-   if (ret) {
-   DRM_ERROR("Failed to initialize connector with drm\n");
-   return ret;
-   }
-
-   ret = drm_connector_attach_encoder(connector, bridge->encoder);
+   ret = ge_b850v3_lvds_create_connector(bridge);
if (ret)
return ret;
 
-- 
2.25.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel