Commit f639f74a authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/mgag200: Add per-device callbacks



While currently empty, the device callbacks will allow mgag200's
modesetting code to interact with the BMC and PIXPLLC.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Tested-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220728124103.30159-10-tzimmermann@suse.de
parent 5cd062e3
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -162,13 +162,15 @@ int mgag200_device_preinit(struct mga_device *mdev)
}

int mgag200_device_init(struct mga_device *mdev, enum mga_type type,
			const struct mgag200_device_info *info)
			const struct mgag200_device_info *info,
			const struct mgag200_device_funcs *funcs)
{
	struct drm_device *dev = &mdev->base;
	u8 crtcext3, misc;
	int ret;

	mdev->info = info;
	mdev->funcs = funcs;
	mdev->type = type;

	ret = drmm_mutex_init(dev, &mdev->rmmio_lock);
+6 −1
Original line number Diff line number Diff line
@@ -262,10 +262,14 @@ struct mgag200_device_info {
		.bug_no_startadd = (_bug_no_startadd), \
	}

struct mgag200_device_funcs {
};

struct mga_device {
	struct drm_device base;

	const struct mgag200_device_info *info;
	const struct mgag200_device_funcs *funcs;

	struct resource			*rmmio_res;
	void __iomem			*rmmio;
@@ -322,7 +326,8 @@ resource_size_t mgag200_probe_vram(void __iomem *mem, resource_size_t size);
resource_size_t mgag200_device_probe_vram(struct mga_device *mdev);
int mgag200_device_preinit(struct mga_device *mdev);
int mgag200_device_init(struct mga_device *mdev, enum mga_type type,
			const struct mgag200_device_info *info);
			const struct mgag200_device_info *info,
			const struct mgag200_device_funcs *funcs);

				/* mgag200_<device type>.c */
struct mga_device *mgag200_g200_device_create(struct pci_dev *pdev, const struct drm_driver *drv,
+5 −1
Original line number Diff line number Diff line
@@ -183,6 +183,9 @@ static void mgag200_g200_init_refclk(struct mgag200_g200_device *g200)
	pci_unmap_rom(pdev, rom);
}

static const struct mgag200_device_funcs mgag200_g200_device_funcs = {
};

struct mga_device *mgag200_g200_device_create(struct pci_dev *pdev, const struct drm_driver *drv,
					      enum mga_type type)
{
@@ -210,7 +213,8 @@ struct mga_device *mgag200_g200_device_create(struct pci_dev *pdev, const struct

	mgag200_g200_init_refclk(g200);

	ret = mgag200_device_init(mdev, type, &mgag200_g200_device_info);
	ret = mgag200_device_init(mdev, type, &mgag200_g200_device_info,
				  &mgag200_g200_device_funcs);
	if (ret)
		return ERR_PTR(ret);

+5 −1
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ void mgag200_g200eh_init_registers(struct mga_device *mdev)
static const struct mgag200_device_info mgag200_g200eh_device_info =
	MGAG200_DEVICE_INFO_INIT(2048, 2048, 37500, false, 1, 0, false);

static const struct mgag200_device_funcs mgag200_g200eh_device_funcs = {
};

struct mga_device *mgag200_g200eh_device_create(struct pci_dev *pdev, const struct drm_driver *drv,
						enum mga_type type)
{
@@ -60,7 +63,8 @@ struct mga_device *mgag200_g200eh_device_create(struct pci_dev *pdev, const stru
	if (ret)
		return ERR_PTR(ret);

	ret = mgag200_device_init(mdev, type, &mgag200_g200eh_device_info);
	ret = mgag200_device_init(mdev, type, &mgag200_g200eh_device_info,
				  &mgag200_g200eh_device_funcs);
	if (ret)
		return ERR_PTR(ret);

+5 −1
Original line number Diff line number Diff line
@@ -13,6 +13,9 @@
static const struct mgag200_device_info mgag200_g200eh3_device_info =
	MGAG200_DEVICE_INFO_INIT(2048, 2048, 0, false, 1, 0, false);

static const struct mgag200_device_funcs mgag200_g200eh3_device_funcs = {
};

struct mga_device *mgag200_g200eh3_device_create(struct pci_dev *pdev,
						 const struct drm_driver *drv,
						 enum mga_type type)
@@ -37,7 +40,8 @@ struct mga_device *mgag200_g200eh3_device_create(struct pci_dev *pdev,
	if (ret)
		return ERR_PTR(ret);

	ret = mgag200_device_init(mdev, type, &mgag200_g200eh3_device_info);
	ret = mgag200_device_init(mdev, type, &mgag200_g200eh3_device_info,
				  &mgag200_g200eh3_device_funcs);
	if (ret)
		return ERR_PTR(ret);

Loading