Skip to content

Commit

Permalink
drm/ast: Managed release of ast firmware
Browse files Browse the repository at this point in the history
The ast driver loads firmware for the DP501 display encoder. The
patch replaces the removal code with a managed release function.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200730135206.30239-8-tzimmermann@suse.de
  • Loading branch information
Thomas Zimmermann committed Aug 3, 2020
1 parent e0f5a73 commit 2c0b656
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 13 deletions.
23 changes: 14 additions & 9 deletions drivers/gpu/drm/ast/ast_dp501.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,24 @@

MODULE_FIRMWARE("ast_dp501_fw.bin");

static void ast_release_firmware(void *data)
{
struct ast_private *ast = data;

release_firmware(ast->dp501_fw);
ast->dp501_fw = NULL;
}

static int ast_load_dp501_microcode(struct drm_device *dev)
{
struct ast_private *ast = to_ast_private(dev);
int ret;

ret = request_firmware(&ast->dp501_fw, "ast_dp501_fw.bin", dev->dev);
if (ret)
return ret;

return request_firmware(&ast->dp501_fw, "ast_dp501_fw.bin", dev->dev);
return devm_add_action_or_reset(dev->dev, ast_release_firmware, ast);
}

static void send_ack(struct ast_private *ast)
Expand Down Expand Up @@ -435,11 +448,3 @@ void ast_init_3rdtx(struct drm_device *dev)
}
}
}

void ast_release_firmware(struct drm_device *dev)
{
struct ast_private *ast = to_ast_private(dev);

release_firmware(ast->dp501_fw);
ast->dp501_fw = NULL;
}
1 change: 0 additions & 1 deletion drivers/gpu/drm/ast/ast_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@ bool ast_backup_fw(struct drm_device *dev, u8 *addr, u32 size);
bool ast_dp501_read_edid(struct drm_device *dev, u8 *ediddata);
u8 ast_get_dp501_max_clk(struct drm_device *dev);
void ast_init_3rdtx(struct drm_device *dev);
void ast_release_firmware(struct drm_device *dev);

/* ast_cursor.c */
int ast_cursor_init(struct ast_private *ast);
Expand Down
3 changes: 0 additions & 3 deletions drivers/gpu/drm/ast/ast_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -442,11 +442,8 @@ struct ast_private *ast_device_create(struct drm_driver *drv,

void ast_device_destroy(struct ast_private *ast)
{
struct drm_device *dev = &ast->base;

/* enable standard VGA decode */
ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);

ast_release_firmware(dev);
kfree(ast->dp501_fw_addr);
}

0 comments on commit 2c0b656

Please sign in to comment.