Commit 80f51c32 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

gma500: add more ops



Split the 2d properties, name, and various function vectors out so that we
can get rid of more conditional gloop in favour of a per device structure.

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 71138b7f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -687,6 +687,11 @@ static int mdfld_power_up(struct drm_device *dev)
}

const struct psb_ops mdfld_chip_ops = {
	.name = "Medfield",
	.accel_2d = 0,
	.crtc_helper = &mdfld_helper_funcs,
	.crtc_funcs = &mdfld_intel_crtc_funcs,

	.output_init = mdfld_output_init,

#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
+5 −0
Original line number Diff line number Diff line
@@ -352,6 +352,11 @@ static int mrst_power_up(struct drm_device *dev)
}

const struct psb_ops mrst_chip_ops = {
	.name = "Moorestown",
	.accel_2d = 1,
	.crtc_helper = &mrst_helper_funcs,
	.crtc_funcs = &psb_intel_crtc_funcs,

	.output_init = mrst_output_init,

#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
+5 −0
Original line number Diff line number Diff line
@@ -282,6 +282,11 @@ int psb_power_up(struct drm_device *dev)
}

const struct psb_ops psb_chip_ops = {
	.name = "Poulsbo",
	.accel_2d = 1,
	.crtc_helper = &psb_intel_helper_funcs,
	.crtc_funcs = &psb_intel_crtc_funcs,

	.output_init = psb_output_init,

#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE
+11 −0
Original line number Diff line number Diff line
@@ -617,6 +617,13 @@ struct drm_psb_private {
 */
 
struct psb_ops {
	const char *name;
	unsigned int accel_2d:1;

	/* Sub functions */
	struct drm_crtc_helper_funcs const *crtc_helper;
	struct drm_crtc_funcs const *crtc_funcs;

	/* Display management hooks */
	int (*output_init)(struct drm_device *dev);
	/* Power management hooks */
@@ -759,6 +766,10 @@ extern const struct drm_crtc_helper_funcs mrst_helper_funcs;
extern void mrst_lvds_init(struct drm_device *dev,
		    struct psb_intel_mode_device *mode_dev);

/* psb_intel_display.c */
extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs;
extern const struct drm_crtc_funcs psb_intel_crtc_funcs;

/* psb_intel_lvds.c */
extern void psb_intel_lvds_prepare(struct drm_encoder *encoder);
extern void psb_intel_lvds_commit(struct drm_encoder *encoder);
+4 −4
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ static int psbfb_ioctl(struct fb_info *info, unsigned int cmd,
	case 0x12345678:
		if (!capable(CAP_SYS_RAWIO))
			return -EPERM;
		if (IS_MFLD(dev))
		if (!dev_priv->ops->accel_2d)
			return -EOPNOTSUPP;
		if (get_user(l, p))
			return -EFAULT;
@@ -240,7 +240,7 @@ static struct fb_ops psbfb_ops = {
	.fb_ioctl = psbfb_ioctl,
};

static struct fb_ops psbfb_mfld_ops = {
static struct fb_ops psbfb_unaccel_ops = {
	.owner = THIS_MODULE,
	.fb_check_var = drm_fb_helper_check_var,
	.fb_set_par = drm_fb_helper_set_par,
@@ -426,8 +426,8 @@ static int psbfb_create(struct psb_fbdev *fbdev,

	info->flags = FBINFO_DEFAULT;
	/* No 2D engine */
	if (IS_MFLD(dev))
		info->fbops = &psbfb_mfld_ops;
	if (!dev_priv->ops->accel_2d)
		info->fbops = &psbfb_unaccel_ops;
	else
		info->fbops = &psbfb_ops;

Loading