diff --git a/drivers/include/drm/drmP.h b/drivers/include/drm/drmP.h index 5488d7c07c..d1b0ee2d2f 100644 --- a/drivers/include/drm/drmP.h +++ b/drivers/include/drm/drmP.h @@ -130,58 +130,7 @@ extern void drm_ut_debug_printk(unsigned int request_level, #define dev_info(dev, format, arg...) \ printk("Info %s " format , __func__, ## arg) -/** - * This structure defines the drm_mm memory object, which will be used by the - * DRM for its buffer objects. - */ -struct drm_gem_object { - /** Reference count of this object */ - struct kref refcount; - /** Handle count of this object. Each handle also holds a reference */ - struct kref handlecount; - - /** Related drm device */ - struct drm_device *dev; - - /** File representing the shmem storage */ -// struct file *filp; - - /* Mapping info for this object */ -// struct drm_map_list map_list; - - /** - * Size of the object, in bytes. Immutable over the object's - * lifetime. - */ - size_t size; - - /** - * Global name for this object, starts at 1. 0 means unnamed. - * Access is covered by the object_name_lock in the related drm_device - */ - int name; - - /** - * Memory domains. These monitor which caches contain read/write data - * related to the object. When transitioning from one set of domains - * to another, the driver is called to ensure that caches are suitably - * flushed and invalidated - */ - uint32_t read_domains; - uint32_t write_domain; - - /** - * While validating an exec operation, the - * new read/write domain values are computed here. - * They will be transferred to the above values - * at the point that any cache flushing occurs - */ - uint32_t pending_read_domains; - uint32_t pending_write_domain; - - void *driver_private; -}; static inline int drm_sysfs_connector_add(struct drm_connector *connector) { return 0; }; @@ -668,6 +617,8 @@ struct drm_gem_mm { struct drm_open_hash offset_hash; /**< User token hash table for maps */ }; +#endif + /** * This structure defines the drm_mm memory object, which will be used by the * DRM for its buffer objects. @@ -686,7 +637,7 @@ struct drm_gem_object { struct file *filp; /* Mapping info for this object */ - struct drm_map_list map_list; +// struct drm_map_list map_list; /** * Size of the object, in bytes. Immutable over the object's @@ -721,6 +672,8 @@ struct drm_gem_object { void *driver_private; }; +#if 0 + #include "drm_crtc.h" /* per-master structure */ @@ -1633,12 +1586,13 @@ drm_gem_object_unreference(struct drm_gem_object *obj) int drm_gem_handle_create(struct drm_file *file_priv, struct drm_gem_object *obj, u32 *handlep); +int drm_gem_handle_delete(struct drm_file *filp, u32 handle); static inline void drm_gem_object_handle_reference(struct drm_gem_object *obj) { drm_gem_object_reference(obj); - kref_get(&obj->handlecount); + atomic_inc(&obj->handle_count); } static inline void @@ -1647,6 +1601,8 @@ drm_gem_object_handle_unreference(struct drm_gem_object *obj) if (obj == NULL) return; + if (atomic_read(&obj->handle_count) == 0) + return; /* * Must bump handle count first as this may be the last * ref, in which case the object would disappear before we @@ -1682,7 +1638,6 @@ static __inline__ struct drm_local_map *drm_core_findmap(struct drm_device *dev, return NULL; } - static __inline__ void drm_core_dropmap(struct drm_local_map *map) { } diff --git a/drivers/include/drm/drm_crtc.h b/drivers/include/drm/drm_crtc.h index d4db858a68..677709f5ac 100644 --- a/drivers/include/drm/drm_crtc.h +++ b/drivers/include/drm/drm_crtc.h @@ -520,6 +520,8 @@ struct drm_connector { uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER]; uint32_t force_encoder_id; struct drm_encoder *encoder; /* currently active encoder */ + + int null_edid_counter; /* needed to workaround some HW bugs where we get all 0s */ }; /** @@ -655,7 +657,7 @@ extern char *drm_get_dvi_i_subconnector_name(int val); extern char *drm_get_dvi_i_select_name(int val); extern char *drm_get_tv_subconnector_name(int val); extern char *drm_get_tv_select_name(int val); -//extern void drm_fb_release(struct drm_file *file_priv); +extern void drm_fb_release(struct drm_file *file_priv); extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); extern struct edid *drm_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter); diff --git a/drivers/video/drm/radeon/fwblob.asm b/drivers/video/drm/radeon/fwblob.asm index 2397275225..4a9133b8c4 100644 --- a/drivers/video/drm/radeon/fwblob.asm +++ b/drivers/video/drm/radeon/fwblob.asm @@ -248,93 +248,93 @@ FIRMWARE_JUNIPER_RLC db 'radeon/JUNIPER_rlc.bin',0 align 16 R100CP_START: - file 'firmware/r100_cp.bin' + file 'firmware/R100_cp.bin' R100CP_END: align 16 R200CP_START: - file 'firmware/r200_cp.bin' + file 'firmware/R200_cp.bin' R200CP_END: align 16 R300CP_START: - file 'firmware/r300_cp.bin' + file 'firmware/R300_cp.bin' R300CP_END: align 16 R420CP_START: - file 'firmware/r420_cp.bin' + file 'firmware/R420_cp.bin' R420CP_END: align 16 R520CP_START: - file 'firmware/r520_cp.bin' + file 'firmware/R520_cp.bin' R520CP_END: align 16 RS600CP_START: - file 'firmware/rs600_cp.bin' + file 'firmware/RS600_cp.bin' RS600CP_END: align 16 RS690CP_START: - file 'firmware/rs690_cp.bin' + file 'firmware/RS690_cp.bin' RS690CP_END: align 16 RS780ME_START: - file 'firmware/rs780_me.bin' + file 'firmware/RS780_me.bin' RS780ME_END: align 16 RS780PFP_START: - file 'firmware/rs780_pfp.bin' + file 'firmware/RS780_pfp.bin' RS780PFP_END: align 16 R600ME_START: - file 'firmware/r600_me.bin' + file 'firmware/R600_me.bin' R600ME_END: align 16 RV610ME_START: - file 'firmware/rv610_me.bin' + file 'firmware/RV610_me.bin' RV610ME_END: align 16 RV620ME_START: - file 'firmware/rv620_me.bin' + file 'firmware/RV620_me.bin' RV620ME_END: align 16 RV630ME_START: - file 'firmware/rv630_me.bin' + file 'firmware/RV630_me.bin' RV630ME_END: align 16 RV635ME_START: - file 'firmware/rv635_me.bin' + file 'firmware/RV635_me.bin' RV635ME_END: align 16 RV670ME_START: - file 'firmware/rv670_me.bin' + file 'firmware/RV670_me.bin' RV670ME_END: align 16 RV710ME_START: - file 'firmware/rv710_me.bin' + file 'firmware/RV710_me.bin' RV710ME_END: align 16 RV730ME_START: - file 'firmware/rv730_me.bin' + file 'firmware/RV730_me.bin' RV730ME_END: align 16 RV770ME_START: - file 'firmware/rv770_me.bin' + file 'firmware/RV770_me.bin' RV770ME_END: align 16 @@ -365,45 +365,45 @@ PALMME_END: align 16 RV610PFP_START: - file 'firmware/rv610_pfp.bin' + file 'firmware/RV610_pfp.bin' RV610PFP_END: align 16 RV620PFP_START: - file 'firmware/rv620_pfp.bin' + file 'firmware/RV620_pfp.bin' RV620PFP_END: align 16 RV630PFP_START: - file 'firmware/rv630_pfp.bin' + file 'firmware/RV630_pfp.bin' RV630PFP_END: align 16 RV635PFP_START: - file 'firmware/rv635_pfp.bin' + file 'firmware/RV635_pfp.bin' RV635PFP_END: align 16 RV670PFP_START: - file 'firmware/rv670_pfp.bin' + file 'firmware/RV670_pfp.bin' RV670PFP_END: align 16 RV710PFP_START: - file 'firmware/rv710_pfp.bin' + file 'firmware/RV710_pfp.bin' RV710PFP_END: align 16 RV730PFP_START: - file 'firmware/rv730_pfp.bin' + file 'firmware/RV730_pfp.bin' RV730PFP_END: align 16 RV770PFP_START: - file 'firmware/rv770_pfp.bin' + file 'firmware/RV770_pfp.bin' RV770PFP_END: @@ -435,12 +435,12 @@ PALMPFP_END: align 16 R600RLC_START: - file 'firmware/r600_rlc.bin' + file 'firmware/R600_rlc.bin' R600RLC_END: align 16 R700RLC_START: - file 'firmware/r700_rlc.bin' + file 'firmware/R700_rlc.bin' R700RLC_END: align 16