Commit 703f4731 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/ast: Support device quirks



Define struct ast_device_quirks and add an instance for each hardware
generation. The type will provide information about per-gen constants
and oddities.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com&gt;>
Link: https://lore.kernel.org/r/20251007150343.273718-3-tzimmermann@suse.de
parent 4b3374d7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -211,6 +211,9 @@ void ast_2000_detect_tx_chip(struct ast_device *ast, bool need_post)
	__ast_device_set_tx_chip(ast, tx_chip);
}

static const struct ast_device_quirks ast_2000_device_quirks = {
};

struct drm_device *ast_2000_device_create(struct pci_dev *pdev,
					  const struct drm_driver *drv,
					  enum ast_chip chip,
@@ -228,7 +231,7 @@ struct drm_device *ast_2000_device_create(struct pci_dev *pdev,
		return ERR_CAST(ast);
	dev = &ast->base;

	ast_device_init(ast, chip, config_mode, regs, ioregs);
	ast_device_init(ast, chip, config_mode, regs, ioregs, &ast_2000_device_quirks);

	ast->dclk_table = ast_2000_dclk_table;

+4 −1
Original line number Diff line number Diff line
@@ -432,6 +432,9 @@ static void ast_2100_detect_widescreen(struct ast_device *ast)
		ast->support_wuxga = true;
}

static const struct ast_device_quirks ast_2100_device_quirks = {
};

struct drm_device *ast_2100_device_create(struct pci_dev *pdev,
					  const struct drm_driver *drv,
					  enum ast_chip chip,
@@ -449,7 +452,7 @@ struct drm_device *ast_2100_device_create(struct pci_dev *pdev,
		return ERR_CAST(ast);
	dev = &ast->base;

	ast_device_init(ast, chip, config_mode, regs, ioregs);
	ast_device_init(ast, chip, config_mode, regs, ioregs, &ast_2100_device_quirks);

	ast->dclk_table = ast_2000_dclk_table;

+4 −1
Original line number Diff line number Diff line
@@ -43,6 +43,9 @@ static void ast_2200_detect_widescreen(struct ast_device *ast)
		ast->support_wuxga = true;
}

static const struct ast_device_quirks ast_2200_device_quirks = {
};

struct drm_device *ast_2200_device_create(struct pci_dev *pdev,
					  const struct drm_driver *drv,
					  enum ast_chip chip,
@@ -60,7 +63,7 @@ struct drm_device *ast_2200_device_create(struct pci_dev *pdev,
		return ERR_CAST(ast);
	dev = &ast->base;

	ast_device_init(ast, chip, config_mode, regs, ioregs);
	ast_device_init(ast, chip, config_mode, regs, ioregs, &ast_2200_device_quirks);

	ast->dclk_table = ast_2000_dclk_table;

+4 −1
Original line number Diff line number Diff line
@@ -1407,6 +1407,9 @@ static void ast_2300_detect_widescreen(struct ast_device *ast)
		ast->support_wuxga = true;
}

static const struct ast_device_quirks ast_2300_device_quirks = {
};

struct drm_device *ast_2300_device_create(struct pci_dev *pdev,
					  const struct drm_driver *drv,
					  enum ast_chip chip,
@@ -1424,7 +1427,7 @@ struct drm_device *ast_2300_device_create(struct pci_dev *pdev,
		return ERR_CAST(ast);
	dev = &ast->base;

	ast_device_init(ast, chip, config_mode, regs, ioregs);
	ast_device_init(ast, chip, config_mode, regs, ioregs, &ast_2300_device_quirks);

	ast->dclk_table = ast_2000_dclk_table;

+4 −1
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@ static void ast_2400_detect_widescreen(struct ast_device *ast)
		ast->support_wuxga = true;
}

static const struct ast_device_quirks ast_2400_device_quirks = {
};

struct drm_device *ast_2400_device_create(struct pci_dev *pdev,
					  const struct drm_driver *drv,
					  enum ast_chip chip,
@@ -61,7 +64,7 @@ struct drm_device *ast_2400_device_create(struct pci_dev *pdev,
		return ERR_CAST(ast);
	dev = &ast->base;

	ast_device_init(ast, chip, config_mode, regs, ioregs);
	ast_device_init(ast, chip, config_mode, regs, ioregs, &ast_2400_device_quirks);

	ast->dclk_table = ast_2000_dclk_table;

Loading