[13/14] drm/ast: Move widescreen- and tx-chip detection into separate helpers
Sui Jingfeng
suijingfeng at loongson.cn
Mon Jun 19 02:53:02 UTC 2023
Hi,
Split ast_detect_chip() into three functions made it more clear.
As tx-chip is typicality suffer from changed, and it is a choice of the
PCB board designer.
tx-chip belong to the output, which chip identify and wide screen
support is a capability of
the chip itself, once the chip is taped, it is fixed. So this patch
looks fine.
On 2023/6/16 21:52, Thomas Zimmermann wrote:
> Split ast_detect_chip() into three functions and call them one by
> one. The new functions detect the transmitter chip and widescreen
> support. This will allow for further refactoring.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
Reviewed-by: Sui Jingfeng <suijingfeng at loongson.cn>
Tested-by: Sui Jingfeng <suijingfeng at loongson.cn>
> ---
> drivers/gpu/drm/ast/ast_main.c | 18 +++++++++++++++---
> 1 file changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index 7f8fb9a613604..f028b5b47c56e 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -157,7 +157,6 @@ static int ast_detect_chip(struct drm_device *dev, bool need_post, u32 scu_rev)
> {
> struct ast_device *ast = to_ast_device(dev);
> struct pci_dev *pdev = to_pci_dev(dev->dev);
> - uint32_t jreg;
>
> /* Identify chipset */
> if (pdev->revision >= 0x50) {
> @@ -218,6 +217,13 @@ static int ast_detect_chip(struct drm_device *dev, bool need_post, u32 scu_rev)
> drm_info(dev, "AST 2000 detected\n");
> }
>
> + return 0;
> +}
> +
> +static void ast_detect_widescreen(struct ast_device *ast)
> +{
> + u8 jreg;
> +
> /* Check if we support wide screen */
> switch (AST_GEN(ast)) {
> case 1:
> @@ -242,6 +248,12 @@ static int ast_detect_chip(struct drm_device *dev, bool need_post, u32 scu_rev)
> }
> break;
> }
> +}
> +
> +static void ast_detect_tx_chip(struct ast_device *ast, bool need_post)
> +{
> + struct drm_device *dev = &ast->base;
> + u8 jreg;
>
> /* Check 3rd Tx option (digital output afaik) */
> ast->tx_chip_types |= AST_TX_NONE_BIT;
> @@ -301,8 +313,6 @@ static int ast_detect_chip(struct drm_device *dev, bool need_post, u32 scu_rev)
> drm_info(dev, "Using DP501 DisplayPort transmitter\n");
> if (ast->tx_chip_types & AST_TX_ASTDP_BIT)
> drm_info(dev, "Using ASPEED DisplayPort transmitter\n");
> -
> - return 0;
> }
>
> static int ast_get_dram_info(struct drm_device *dev)
> @@ -494,6 +504,8 @@ struct ast_device *ast_device_create(const struct drm_driver *drv,
> ast_detect_config_mode(dev, &scu_rev);
>
> ast_detect_chip(dev, need_post, scu_rev);
> + ast_detect_widescreen(ast);
> + ast_detect_tx_chip(ast, need_post);
>
> ret = ast_get_dram_info(dev);
> if (ret)
--
Jingfeng
More information about the dri-devel
mailing list