Re: [13/14] drm/ast: Move widescreen- and tx-chip detection into separate helpers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxx>

Reviewed-by: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>

Tested-by: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>

---
  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




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux