From: Dave Airlie Date: Mon, 17 Jan 2011 02:20:31 +0000 (+1000) Subject: Merge remote branch 'nouveau/drm-nouveau-next' of /ssd/git/drm-nouveau-next into... X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=51fda92223f5b668cccffd51bf3d7bedc93609ff;hp=-c;p=mv-sheeva.git Merge remote branch 'nouveau/drm-nouveau-next' of /ssd/git/drm-nouveau-next into drm-fixes * 'nouveau/drm-nouveau-next' of /ssd/git/drm-nouveau-next: drm/nouveau: fix gpu page faults triggered by plymouthd drm/nouveau: greatly simplify mm, killing some bugs in the process drm/nvc0: enable protection of system-use-only structures in vm drm/nv40: initialise 0x17xx on all chipsets that have it drm/nv40: make detection of 0x4097-ful chipsets available everywhere --- 51fda92223f5b668cccffd51bf3d7bedc93609ff diff --combined drivers/gpu/drm/nouveau/nouveau_drv.h index 46e32573b3a,51920321d05..01bffc4412d --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h @@@ -160,6 -160,7 +160,7 @@@ enum nouveau_flags #define NVOBJ_FLAG_ZERO_ALLOC (1 << 1) #define NVOBJ_FLAG_ZERO_FREE (1 << 2) #define NVOBJ_FLAG_VM (1 << 3) + #define NVOBJ_FLAG_VM_USER (1 << 4) #define NVOBJ_CINST_GLOBAL 0xdeadbeef @@@ -753,8 -754,6 +754,8 @@@ struct drm_nouveau_private struct nouveau_fbdev *nfbdev; struct apertures_struct *apertures; + + bool powered_down; }; static inline struct drm_nouveau_private * @@@ -1576,6 -1575,20 +1577,20 @@@ nv_match_device(struct drm_device *dev dev->pdev->subsystem_device == sub_device; } + /* returns 1 if device is one of the nv4x using the 0x4497 object class, + * helpful to determine a number of other hardware features + */ + static inline int + nv44_graph_class(struct drm_device *dev) + { + struct drm_nouveau_private *dev_priv = dev->dev_private; + + if ((dev_priv->chipset & 0xf0) == 0x60) + return 1; + + return !(0x0baf & (1 << (dev_priv->chipset & 0x0f))); + } + /* memory type/access flags, do not match hardware values */ #define NV_MEM_ACCESS_RO 1 #define NV_MEM_ACCESS_WO 2 diff --combined drivers/gpu/drm/nouveau/nouveau_fbcon.c index 6d56a54b6e2,f988362c112..60769d2f9a6 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@@ -352,8 -352,8 +352,8 @@@ nouveau_fbcon_create(struct nouveau_fbd FBINFO_HWACCEL_IMAGEBLIT; info->flags |= FBINFO_CAN_FORCE_OUTPUT; info->fbops = &nouveau_fbcon_sw_ops; - info->fix.smem_start = dev->mode_config.fb_base + - (nvbo->bo.mem.start << PAGE_SHIFT); + info->fix.smem_start = nvbo->bo.mem.bus.base + + nvbo->bo.mem.bus.offset; info->fix.smem_len = size; info->screen_base = nvbo_kmap_obj_iovirtual(nouveau_fb->nvbo); @@@ -362,6 -362,10 +362,6 @@@ drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); drm_fb_helper_fill_var(info, &nfbdev->helper, sizes->fb_width, sizes->fb_height); - /* FIXME: we really shouldn't expose mmio space at all */ - info->fix.mmio_start = pci_resource_start(pdev, 1); - info->fix.mmio_len = pci_resource_len(pdev, 1); - /* Set aperture base/size for vesafb takeover */ info->apertures = dev_priv->apertures; if (!info->apertures) {