Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c07d7237 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (45 commits)
  drm/nv04: Fix set_operation software method.
  drm/nouveau: initialise DMA tracking parameters earlier
  drm/nouveau: use dma.max rather than pushbuf size for checking GET validity
  drm/nv04: differentiate between nv04/nv05
  drm/nouveau: Fix null deref in nouveau_fence_emit due to deleted fence
  drm/nv50: prevent a possible ctxprog hang
  drm/nouveau: have ttm's fault handler called directly
  drm/nv50: restore correct cache1 get/put address on fifoctx load
  drm/nouveau: create function for "dealing" with gpu lockup
  drm/nouveau: remove unused nouveau_channel_idle() function
  drm/nouveau: fix handling of fbcon colours in 8bpp
  drm/nv04: Context switching fixes.
  drm/nouveau: Use the software object for fencing.
  drm/nouveau: Allocate a per-channel instance of NV_SW.
  drm/nv50: make the blocksize depend on vram size
  drm/nouveau: better alignment of bo sizes and use roundup instead of ALIGN
  drm/nouveau: Don't skip card take down on nv0x.
  drm/nouveau: Implement nv42-nv43 TV load detection.
  drm/nouveau: Clean up the nv17-nv4x load detection code a bit.
  drm/nv50: fix fillrect color
  ...
parents 6102c315 f22d6dda
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -158,6 +158,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
	{ DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
	{ DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
	{ DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
	{ DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
	{ DRM_MODE_CONNECTOR_TV, "TV", 0 },
	{ DRM_MODE_CONNECTOR_TV, "TV", 0 },
	{ DRM_MODE_CONNECTOR_eDP, "Embedded DisplayPort", 0 },
};
};


static struct drm_prop_enum_list drm_encoder_enum_list[] =
static struct drm_prop_enum_list drm_encoder_enum_list[] =
+24 −2
Original line number Original line Diff line number Diff line
@@ -216,7 +216,7 @@ bool drm_helper_crtc_in_use(struct drm_crtc *crtc)
EXPORT_SYMBOL(drm_helper_crtc_in_use);
EXPORT_SYMBOL(drm_helper_crtc_in_use);


/**
/**
 * drm_disable_unused_functions - disable unused objects
 * drm_helper_disable_unused_functions - disable unused objects
 * @dev: DRM device
 * @dev: DRM device
 *
 *
 * LOCKING:
 * LOCKING:
@@ -1032,7 +1032,7 @@ bool drm_helper_initial_config(struct drm_device *dev)
	/*
	/*
	 * we shouldn't end up with no modes here.
	 * we shouldn't end up with no modes here.
	 */
	 */
	WARN(!count, "No connectors reported connected with modes\n");
	printk(KERN_INFO "No connectors reported conncted with modes\n");


	drm_setup_crtcs(dev);
	drm_setup_crtcs(dev);


@@ -1162,6 +1162,9 @@ EXPORT_SYMBOL(drm_helper_mode_fill_fb_struct);
int drm_helper_resume_force_mode(struct drm_device *dev)
int drm_helper_resume_force_mode(struct drm_device *dev)
{
{
	struct drm_crtc *crtc;
	struct drm_crtc *crtc;
	struct drm_encoder *encoder;
	struct drm_encoder_helper_funcs *encoder_funcs;
	struct drm_crtc_helper_funcs *crtc_funcs;
	int ret;
	int ret;


	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
@@ -1174,6 +1177,25 @@ int drm_helper_resume_force_mode(struct drm_device *dev)


		if (ret == false)
		if (ret == false)
			DRM_ERROR("failed to set mode on crtc %p\n", crtc);
			DRM_ERROR("failed to set mode on crtc %p\n", crtc);

		/* Turn off outputs that were already powered off */
		if (drm_helper_choose_crtc_dpms(crtc)) {
			list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {

				if(encoder->crtc != crtc)
					continue;

				encoder_funcs = encoder->helper_private;
				if (encoder_funcs->dpms)
					(*encoder_funcs->dpms) (encoder,
								drm_helper_choose_encoder_dpms(encoder));

				crtc_funcs = crtc->helper_private;
				if (crtc_funcs->dpms)
					(*crtc_funcs->dpms) (crtc,
							     drm_helper_choose_crtc_dpms(crtc));
			}
		}
	}
	}
	/* disable the unused connectors while restoring the modesetting */
	/* disable the unused connectors while restoring the modesetting */
	drm_helper_disable_unused_functions(dev);
	drm_helper_disable_unused_functions(dev);
+4 −5
Original line number Original line Diff line number Diff line
@@ -606,11 +606,10 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
		return -EINVAL;
		return -EINVAL;


	/* Need to resize the fb object !!! */
	/* Need to resize the fb object !!! */
	if (var->xres > fb->width || var->yres > fb->height) {
	if (var->bits_per_pixel > fb->bits_per_pixel || var->xres > fb->width || var->yres > fb->height) {
		DRM_ERROR("Requested width/height is greater than current fb "
		DRM_DEBUG("fb userspace requested width/height/bpp is greater than current fb "
			   "object %dx%d > %dx%d\n", var->xres, var->yres,
			  "object %dx%d-%d > %dx%d-%d\n", var->xres, var->yres, var->bits_per_pixel,
			   fb->width, fb->height);
			  fb->width, fb->height, fb->bits_per_pixel);
		DRM_ERROR("Need resizing code.\n");
		return -EINVAL;
		return -EINVAL;
	}
	}


+4 −1
Original line number Original line Diff line number Diff line
@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev)


	dev->num_crtcs = 0;
	dev->num_crtcs = 0;
}
}
EXPORT_SYMBOL(drm_vblank_cleanup);


int drm_vblank_init(struct drm_device *dev, int num_crtcs)
int drm_vblank_init(struct drm_device *dev, int num_crtcs)
{
{
@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
	}
	}


	dev->vblank_disable_allowed = 0;
	dev->vblank_disable_allowed = 0;

	return 0;
	return 0;


err:
err:
@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off);
 */
 */
void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
{
{
	/* vblank is not initialized (IRQ not installed ?) */
	if (!dev->num_crtcs)
		return;
	/*
	/*
	 * To avoid all the problems that might happen if interrupts
	 * To avoid all the problems that might happen if interrupts
	 * were enabled/disabled around or between these calls, we just
	 * were enabled/disabled around or between these calls, we just
+2 −3
Original line number Original line Diff line number Diff line
@@ -30,12 +30,11 @@ config DRM_NOUVEAU_DEBUG
	  via debugfs.
	  via debugfs.


menu "I2C encoder or helper chips"
menu "I2C encoder or helper chips"
     depends on DRM && I2C
     depends on DRM && DRM_KMS_HELPER && I2C


config DRM_I2C_CH7006
config DRM_I2C_CH7006
	tristate "Chrontel ch7006 TV encoder"
	tristate "Chrontel ch7006 TV encoder"
	depends on DRM_NOUVEAU
	default m if DRM_NOUVEAU
	default m
	help
	help
	  Support for Chrontel ch7006 and similar TV encoders, found
	  Support for Chrontel ch7006 and similar TV encoders, found
	  on some nVidia video cards.
	  on some nVidia video cards.
Loading