diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-12 21:09:18 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-12 21:09:18 -0400 |
| commit | 6b702462cbe5b6f372966a53f4465d745d86b65c (patch) | |
| tree | 19a8d090b284bb804e8a2ffa38fa51b58118db6a /include | |
| parent | 947ec0b0c1e7e80eef4fe64f7763a06d0cf04d2e (diff) | |
| parent | 3c24475c1e4e8d10e50df161d8c4f1d382997a7c (diff) | |
Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (50 commits)
drm: include kernel list header file in hashtab header
drm: Export hash table functionality.
drm: Split out the mm declarations in a separate header. Add atomic operations.
drm/radeon: add support for RV790.
drm/radeon: add rv740 drm support.
drm_calloc_large: check right size, check integer overflow, use GFP_ZERO
drm: Eliminate magic I2C frobbing when reading EDID
drm/i915: duplicate desired mode for use by fbcon.
drm/via: vfree() no need checking before calling it
drm: Replace DRM_DEBUG with DRM_DEBUG_DRIVER in i915 driver
drm: Replace DRM_DEBUG with DRM_DEBUG_MODE in drm_mode
drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in intel_sdvo
drm/i915: replace DRM_DEBUG with DRM_DEBUG_KMS in intel_lvds
drm: add separate drm debugging levels
radeon: remove _DRM_DRIVER from the preadded sarea map
drm: don't associate _DRM_DRIVER maps with a master
drm: simplify kcalloc() call to kzalloc().
intelfb: fix spelling of "CLOCK"
drm: fix LOCK_TEST_WITH_RETURN macro
drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect)
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/drm/drmP.h | 126 | ||||
| -rw-r--r-- | include/drm/drm_hashtab.h | 2 | ||||
| -rw-r--r-- | include/drm/drm_mm.h | 90 | ||||
| -rw-r--r-- | include/drm/drm_pciids.h | 9 | ||||
| -rw-r--r-- | include/linux/pnp.h | 2 |
5 files changed, 172 insertions, 57 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index b84d8ae35e6f..d4ddc22e46bb 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
| @@ -86,7 +86,17 @@ struct drm_device; | |||
| 86 | 86 | ||
| 87 | #include "drm_os_linux.h" | 87 | #include "drm_os_linux.h" |
| 88 | #include "drm_hashtab.h" | 88 | #include "drm_hashtab.h" |
| 89 | #include "drm_mm.h" | ||
| 89 | 90 | ||
| 91 | #define DRM_UT_CORE 0x01 | ||
| 92 | #define DRM_UT_DRIVER 0x02 | ||
| 93 | #define DRM_UT_KMS 0x04 | ||
| 94 | #define DRM_UT_MODE 0x08 | ||
| 95 | |||
| 96 | extern void drm_ut_debug_printk(unsigned int request_level, | ||
| 97 | const char *prefix, | ||
| 98 | const char *function_name, | ||
| 99 | const char *format, ...); | ||
| 90 | /***********************************************************************/ | 100 | /***********************************************************************/ |
| 91 | /** \name DRM template customization defaults */ | 101 | /** \name DRM template customization defaults */ |
| 92 | /*@{*/ | 102 | /*@{*/ |
| @@ -186,15 +196,57 @@ struct drm_device; | |||
| 186 | * \param arg arguments | 196 | * \param arg arguments |
| 187 | */ | 197 | */ |
| 188 | #if DRM_DEBUG_CODE | 198 | #if DRM_DEBUG_CODE |
| 189 | #define DRM_DEBUG(fmt, arg...) \ | 199 | #define DRM_DEBUG(fmt, args...) \ |
| 200 | do { \ | ||
| 201 | drm_ut_debug_printk(DRM_UT_CORE, DRM_NAME, \ | ||
| 202 | __func__, fmt, ##args); \ | ||
| 203 | } while (0) | ||
| 204 | |||
| 205 | #define DRM_DEBUG_DRIVER(prefix, fmt, args...) \ | ||
| 206 | do { \ | ||
| 207 | drm_ut_debug_printk(DRM_UT_DRIVER, prefix, \ | ||
| 208 | __func__, fmt, ##args); \ | ||
| 209 | } while (0) | ||
| 210 | #define DRM_DEBUG_KMS(prefix, fmt, args...) \ | ||
| 211 | do { \ | ||
| 212 | drm_ut_debug_printk(DRM_UT_KMS, prefix, \ | ||
| 213 | __func__, fmt, ##args); \ | ||
| 214 | } while (0) | ||
| 215 | #define DRM_DEBUG_MODE(prefix, fmt, args...) \ | ||
| 216 | do { \ | ||
| 217 | drm_ut_debug_printk(DRM_UT_MODE, prefix, \ | ||
| 218 | __func__, fmt, ##args); \ | ||
| 219 | } while (0) | ||
| 220 | #define DRM_LOG(fmt, args...) \ | ||
| 221 | do { \ | ||
| 222 | drm_ut_debug_printk(DRM_UT_CORE, NULL, \ | ||
| 223 | NULL, fmt, ##args); \ | ||
| 224 | } while (0) | ||
| 225 | #define DRM_LOG_KMS(fmt, args...) \ | ||
| 226 | do { \ | ||
| 227 | drm_ut_debug_printk(DRM_UT_KMS, NULL, \ | ||
| 228 | NULL, fmt, ##args); \ | ||
| 229 | } while (0) | ||
| 230 | #define DRM_LOG_MODE(fmt, args...) \ | ||
| 231 | do { \ | ||
| 232 | drm_ut_debug_printk(DRM_UT_MODE, NULL, \ | ||
| 233 | NULL, fmt, ##args); \ | ||
| 234 | } while (0) | ||
| 235 | #define DRM_LOG_DRIVER(fmt, args...) \ | ||
| 190 | do { \ | 236 | do { \ |
| 191 | if ( drm_debug ) \ | 237 | drm_ut_debug_printk(DRM_UT_DRIVER, NULL, \ |
| 192 | printk(KERN_DEBUG \ | 238 | NULL, fmt, ##args); \ |
| 193 | "[" DRM_NAME ":%s] " fmt , \ | ||
| 194 | __func__ , ##arg); \ | ||
| 195 | } while (0) | 239 | } while (0) |
| 196 | #else | 240 | #else |
| 241 | #define DRM_DEBUG_DRIVER(prefix, fmt, args...) do { } while (0) | ||
| 242 | #define DRM_DEBUG_KMS(prefix, fmt, args...) do { } while (0) | ||
| 243 | #define DRM_DEBUG_MODE(prefix, fmt, args...) do { } while (0) | ||
| 197 | #define DRM_DEBUG(fmt, arg...) do { } while (0) | 244 | #define DRM_DEBUG(fmt, arg...) do { } while (0) |
| 245 | #define DRM_LOG(fmt, arg...) do { } while (0) | ||
| 246 | #define DRM_LOG_KMS(fmt, args...) do { } while (0) | ||
| 247 | #define DRM_LOG_MODE(fmt, arg...) do { } while (0) | ||
| 248 | #define DRM_LOG_DRIVER(fmt, arg...) do { } while (0) | ||
| 249 | |||
| 198 | #endif | 250 | #endif |
| 199 | 251 | ||
| 200 | #define DRM_PROC_LIMIT (PAGE_SIZE-80) | 252 | #define DRM_PROC_LIMIT (PAGE_SIZE-80) |
| @@ -237,15 +289,15 @@ struct drm_device; | |||
| 237 | * \param dev DRM device. | 289 | * \param dev DRM device. |
| 238 | * \param filp file pointer of the caller. | 290 | * \param filp file pointer of the caller. |
| 239 | */ | 291 | */ |
| 240 | #define LOCK_TEST_WITH_RETURN( dev, file_priv ) \ | 292 | #define LOCK_TEST_WITH_RETURN( dev, _file_priv ) \ |
| 241 | do { \ | 293 | do { \ |
| 242 | if (!_DRM_LOCK_IS_HELD(file_priv->master->lock.hw_lock->lock) || \ | 294 | if (!_DRM_LOCK_IS_HELD(_file_priv->master->lock.hw_lock->lock) || \ |
| 243 | file_priv->master->lock.file_priv != file_priv) { \ | 295 | _file_priv->master->lock.file_priv != _file_priv) { \ |
| 244 | DRM_ERROR( "%s called without lock held, held %d owner %p %p\n",\ | 296 | DRM_ERROR( "%s called without lock held, held %d owner %p %p\n",\ |
| 245 | __func__, _DRM_LOCK_IS_HELD(file_priv->master->lock.hw_lock->lock),\ | 297 | __func__, _DRM_LOCK_IS_HELD(_file_priv->master->lock.hw_lock->lock),\ |
| 246 | file_priv->master->lock.file_priv, file_priv); \ | 298 | _file_priv->master->lock.file_priv, _file_priv); \ |
| 247 | return -EINVAL; \ | 299 | return -EINVAL; \ |
| 248 | } \ | 300 | } \ |
| 249 | } while (0) | 301 | } while (0) |
| 250 | 302 | ||
| 251 | /** | 303 | /** |
| @@ -502,26 +554,6 @@ struct drm_sigdata { | |||
| 502 | }; | 554 | }; |
| 503 | 555 | ||
| 504 | 556 | ||
| 505 | /* | ||
| 506 | * Generic memory manager structs | ||
| 507 | */ | ||
| 508 | |||
| 509 | struct drm_mm_node { | ||
| 510 | struct list_head fl_entry; | ||
| 511 | struct list_head ml_entry; | ||
| 512 | int free; | ||
| 513 | unsigned long start; | ||
| 514 | unsigned long size; | ||
| 515 | struct drm_mm *mm; | ||
| 516 | void *private; | ||
| 517 | }; | ||
| 518 | |||
| 519 | struct drm_mm { | ||
| 520 | struct list_head fl_entry; | ||
| 521 | struct list_head ml_entry; | ||
| 522 | }; | ||
| 523 | |||
| 524 | |||
| 525 | /** | 557 | /** |
| 526 | * Kernel side of a mapping | 558 | * Kernel side of a mapping |
| 527 | */ | 559 | */ |
| @@ -1385,22 +1417,6 @@ extern char *drm_get_connector_status_name(enum drm_connector_status status); | |||
| 1385 | extern int drm_sysfs_connector_add(struct drm_connector *connector); | 1417 | extern int drm_sysfs_connector_add(struct drm_connector *connector); |
| 1386 | extern void drm_sysfs_connector_remove(struct drm_connector *connector); | 1418 | extern void drm_sysfs_connector_remove(struct drm_connector *connector); |
| 1387 | 1419 | ||
| 1388 | /* | ||
| 1389 | * Basic memory manager support (drm_mm.c) | ||
| 1390 | */ | ||
| 1391 | extern struct drm_mm_node *drm_mm_get_block(struct drm_mm_node * parent, | ||
| 1392 | unsigned long size, | ||
| 1393 | unsigned alignment); | ||
| 1394 | extern void drm_mm_put_block(struct drm_mm_node * cur); | ||
| 1395 | extern struct drm_mm_node *drm_mm_search_free(const struct drm_mm *mm, unsigned long size, | ||
| 1396 | unsigned alignment, int best_match); | ||
| 1397 | extern int drm_mm_init(struct drm_mm *mm, unsigned long start, unsigned long size); | ||
| 1398 | extern void drm_mm_takedown(struct drm_mm *mm); | ||
| 1399 | extern int drm_mm_clean(struct drm_mm *mm); | ||
| 1400 | extern unsigned long drm_mm_tail_space(struct drm_mm *mm); | ||
| 1401 | extern int drm_mm_remove_space_from_tail(struct drm_mm *mm, unsigned long size); | ||
| 1402 | extern int drm_mm_add_space_to_tail(struct drm_mm *mm, unsigned long size); | ||
| 1403 | |||
| 1404 | /* Graphics Execution Manager library functions (drm_gem.c) */ | 1420 | /* Graphics Execution Manager library functions (drm_gem.c) */ |
| 1405 | int drm_gem_init(struct drm_device *dev); | 1421 | int drm_gem_init(struct drm_device *dev); |
| 1406 | void drm_gem_destroy(struct drm_device *dev); | 1422 | void drm_gem_destroy(struct drm_device *dev); |
| @@ -1522,18 +1538,14 @@ static __inline__ void *drm_calloc(size_t nmemb, size_t size, int area) | |||
| 1522 | 1538 | ||
| 1523 | static __inline__ void *drm_calloc_large(size_t nmemb, size_t size) | 1539 | static __inline__ void *drm_calloc_large(size_t nmemb, size_t size) |
| 1524 | { | 1540 | { |
| 1525 | u8 *addr; | 1541 | if (size * nmemb <= PAGE_SIZE) |
| 1526 | |||
| 1527 | if (size <= PAGE_SIZE) | ||
| 1528 | return kcalloc(nmemb, size, GFP_KERNEL); | 1542 | return kcalloc(nmemb, size, GFP_KERNEL); |
| 1529 | 1543 | ||
| 1530 | addr = vmalloc(nmemb * size); | 1544 | if (size != 0 && nmemb > ULONG_MAX / size) |
| 1531 | if (!addr) | ||
| 1532 | return NULL; | 1545 | return NULL; |
| 1533 | 1546 | ||
| 1534 | memset(addr, 0, nmemb * size); | 1547 | return __vmalloc(size * nmemb, |
| 1535 | 1548 | GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, PAGE_KERNEL); | |
| 1536 | return addr; | ||
| 1537 | } | 1549 | } |
| 1538 | 1550 | ||
| 1539 | static __inline void drm_free_large(void *ptr) | 1551 | static __inline void drm_free_large(void *ptr) |
diff --git a/include/drm/drm_hashtab.h b/include/drm/drm_hashtab.h index cd2b189e1be6..0af087a4d3b3 100644 --- a/include/drm/drm_hashtab.h +++ b/include/drm/drm_hashtab.h | |||
| @@ -35,6 +35,8 @@ | |||
| 35 | #ifndef DRM_HASHTAB_H | 35 | #ifndef DRM_HASHTAB_H |
| 36 | #define DRM_HASHTAB_H | 36 | #define DRM_HASHTAB_H |
| 37 | 37 | ||
| 38 | #include <linux/list.h> | ||
| 39 | |||
| 38 | #define drm_hash_entry(_ptr, _type, _member) container_of(_ptr, _type, _member) | 40 | #define drm_hash_entry(_ptr, _type, _member) container_of(_ptr, _type, _member) |
| 39 | 41 | ||
| 40 | struct drm_hash_item { | 42 | struct drm_hash_item { |
diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h new file mode 100644 index 000000000000..5662f4278ef3 --- /dev/null +++ b/include/drm/drm_mm.h | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | /************************************************************************** | ||
| 2 | * | ||
| 3 | * Copyright 2006-2008 Tungsten Graphics, Inc., Cedar Park, TX. USA. | ||
| 4 | * All Rights Reserved. | ||
| 5 | * | ||
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
| 7 | * copy of this software and associated documentation files (the | ||
| 8 | * "Software"), to deal in the Software without restriction, including | ||
| 9 | * without limitation the rights to use, copy, modify, merge, publish, | ||
| 10 | * distribute, sub license, and/or sell copies of the Software, and to | ||
| 11 | * permit persons to whom the Software is furnished to do so, subject to | ||
| 12 | * the following conditions: | ||
| 13 | * | ||
| 14 | * The above copyright notice and this permission notice (including the | ||
| 15 | * next paragraph) shall be included in all copies or substantial portions | ||
| 16 | * of the Software. | ||
| 17 | * | ||
| 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL | ||
| 21 | * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, | ||
| 22 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||
| 23 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||
| 24 | * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 25 | * | ||
| 26 | * | ||
| 27 | **************************************************************************/ | ||
| 28 | /* | ||
| 29 | * Authors: | ||
| 30 | * Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> | ||
| 31 | */ | ||
| 32 | |||
| 33 | #ifndef _DRM_MM_H_ | ||
| 34 | #define _DRM_MM_H_ | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Generic range manager structs | ||
| 38 | */ | ||
| 39 | #include <linux/list.h> | ||
| 40 | |||
| 41 | struct drm_mm_node { | ||
| 42 | struct list_head fl_entry; | ||
| 43 | struct list_head ml_entry; | ||
| 44 | int free; | ||
| 45 | unsigned long start; | ||
| 46 | unsigned long size; | ||
| 47 | struct drm_mm *mm; | ||
| 48 | void *private; | ||
| 49 | }; | ||
| 50 | |||
| 51 | struct drm_mm { | ||
| 52 | struct list_head fl_entry; | ||
| 53 | struct list_head ml_entry; | ||
| 54 | struct list_head unused_nodes; | ||
| 55 | int num_unused; | ||
| 56 | spinlock_t unused_lock; | ||
| 57 | }; | ||
| 58 | |||
| 59 | /* | ||
| 60 | * Basic range manager support (drm_mm.c) | ||
| 61 | */ | ||
| 62 | |||
| 63 | extern struct drm_mm_node *drm_mm_get_block(struct drm_mm_node *parent, | ||
| 64 | unsigned long size, | ||
| 65 | unsigned alignment); | ||
| 66 | extern struct drm_mm_node *drm_mm_get_block_atomic(struct drm_mm_node *parent, | ||
| 67 | unsigned long size, | ||
| 68 | unsigned alignment); | ||
| 69 | extern void drm_mm_put_block(struct drm_mm_node *cur); | ||
| 70 | extern struct drm_mm_node *drm_mm_search_free(const struct drm_mm *mm, | ||
| 71 | unsigned long size, | ||
| 72 | unsigned alignment, | ||
| 73 | int best_match); | ||
| 74 | extern int drm_mm_init(struct drm_mm *mm, unsigned long start, | ||
| 75 | unsigned long size); | ||
| 76 | extern void drm_mm_takedown(struct drm_mm *mm); | ||
| 77 | extern int drm_mm_clean(struct drm_mm *mm); | ||
| 78 | extern unsigned long drm_mm_tail_space(struct drm_mm *mm); | ||
| 79 | extern int drm_mm_remove_space_from_tail(struct drm_mm *mm, | ||
| 80 | unsigned long size); | ||
| 81 | extern int drm_mm_add_space_to_tail(struct drm_mm *mm, | ||
| 82 | unsigned long size, int atomic); | ||
| 83 | extern int drm_mm_pre_get(struct drm_mm *mm); | ||
| 84 | |||
| 85 | static inline struct drm_mm *drm_get_mm(struct drm_mm_node *block) | ||
| 86 | { | ||
| 87 | return block->mm; | ||
| 88 | } | ||
| 89 | |||
| 90 | #endif | ||
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index fc55db780199..f8634ab53b8f 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h | |||
| @@ -254,6 +254,11 @@ | |||
| 254 | {0x1002, 0x940A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ | 254 | {0x1002, 0x940A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ |
| 255 | {0x1002, 0x940B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ | 255 | {0x1002, 0x940B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ |
| 256 | {0x1002, 0x940F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ | 256 | {0x1002, 0x940F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \ |
| 257 | {0x1002, 0x94A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \ | ||
| 258 | {0x1002, 0x94A1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \ | ||
| 259 | {0x1002, 0x94B1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \ | ||
| 260 | {0x1002, 0x94B3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \ | ||
| 261 | {0x1002, 0x94B5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \ | ||
| 257 | {0x1002, 0x9440, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ | 262 | {0x1002, 0x9440, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ |
| 258 | {0x1002, 0x9441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ | 263 | {0x1002, 0x9441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ |
| 259 | {0x1002, 0x9442, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ | 264 | {0x1002, 0x9442, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ |
| @@ -268,6 +273,8 @@ | |||
| 268 | {0x1002, 0x9456, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ | 273 | {0x1002, 0x9456, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \ |
| 269 | {0x1002, 0x945A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 274 | {0x1002, 0x945A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
| 270 | {0x1002, 0x945B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 275 | {0x1002, 0x945B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
| 276 | {0x1002, 0x9460, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
| 277 | {0x1002, 0x9462, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
| 271 | {0x1002, 0x946A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 278 | {0x1002, 0x946A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
| 272 | {0x1002, 0x946B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 279 | {0x1002, 0x946B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
| 273 | {0x1002, 0x947A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 280 | {0x1002, 0x947A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
| @@ -536,4 +543,6 @@ | |||
| 536 | {0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ | 543 | {0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ |
| 537 | {0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ | 544 | {0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ |
| 538 | {0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ | 545 | {0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ |
| 546 | {0x8086, 0x0042, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ | ||
| 547 | {0x8086, 0x0046, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ | ||
| 539 | {0, 0, 0} | 548 | {0, 0, 0} |
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index ca3c88773028..b063c7328ba5 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
| @@ -446,6 +446,7 @@ int pnp_start_dev(struct pnp_dev *dev); | |||
| 446 | int pnp_stop_dev(struct pnp_dev *dev); | 446 | int pnp_stop_dev(struct pnp_dev *dev); |
| 447 | int pnp_activate_dev(struct pnp_dev *dev); | 447 | int pnp_activate_dev(struct pnp_dev *dev); |
| 448 | int pnp_disable_dev(struct pnp_dev *dev); | 448 | int pnp_disable_dev(struct pnp_dev *dev); |
| 449 | int pnp_range_reserved(resource_size_t start, resource_size_t end); | ||
| 449 | 450 | ||
| 450 | /* protocol helpers */ | 451 | /* protocol helpers */ |
| 451 | int pnp_is_active(struct pnp_dev *dev); | 452 | int pnp_is_active(struct pnp_dev *dev); |
| @@ -476,6 +477,7 @@ static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; } | |||
| 476 | static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; } | 477 | static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 477 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } | 478 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 478 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } | 479 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 480 | static inline int pnp_range_reserved(resource_size_t start, resource_size_t end) { return 0;} | ||
| 479 | 481 | ||
| 480 | /* protocol helpers */ | 482 | /* protocol helpers */ |
| 481 | static inline int pnp_is_active(struct pnp_dev *dev) { return 0; } | 483 | static inline int pnp_is_active(struct pnp_dev *dev) { return 0; } |
