Hi
Am 03.02.22 um 18:57 schrieb Javier Martinez Canillas:
On 1/11/22 13:00, Thomas Zimmermann wrote:
Add helpers for initializing SIL164-based connectors. These used to be handled by the VGA connector code. But SIL164 provides output via DVI-I, so set the encoder and connector types accordingly.
If a SIL164 chip has been detected, ast will now create a DVI-I connector instead of a VGA connector.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de
drivers/gpu/drm/ast/ast_drv.h | 15 ++++++ drivers/gpu/drm/ast/ast_mode.c | 99 +++++++++++++++++++++++++++++++++- 2 files changed, 112 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h index 420d19d8459e..c3a582372649 100644 --- a/drivers/gpu/drm/ast/ast_drv.h +++ b/drivers/gpu/drm/ast/ast_drv.h @@ -140,6 +140,17 @@ to_ast_vga_connector(struct drm_connector *connector) return container_of(connector, struct ast_vga_connector, base); }
[snip]
+static int ast_sil164_connector_init(struct drm_device *dev,
struct ast_sil164_connector *ast_sil164_connector)
+{
- struct drm_connector *connector = &ast_sil164_connector->base;
- int ret;
- ast_sil164_connector->i2c = ast_i2c_create(dev);
- if (!ast_sil164_connector->i2c)
drm_err(dev, "failed to add ddc bus for connector\n");
- if (ast_sil164_connector->i2c)
ret = drm_connector_init_with_ddc(dev, connector, &ast_sil164_connector_funcs,
DRM_MODE_CONNECTOR_DVII,
&ast_sil164_connector->i2c->adapter);
- else
ret = drm_connector_init(dev, connector, &ast_sil164_connector_funcs,
DRM_MODE_CONNECTOR_DVII);
- if (ret)
I think you want a kfree(i2c) here before returning.
And where is the struct ast_i2c_chan freed if the function succeeds ?
The memory and data structure is managed with drmm_add_action_or_reset(). It will be released together with the DRM driver (either on success or failure). See ast_i2c_create() for the details.
Best regards Thomas
With that,
Reviewed-by: Javier Martinez Canillas javierm@redhat.com
Best regards,