On Sat, May 8, 2010 at 1:18 AM, Jerome Glisse jglisse@redhat.com wrote:
Userspace need to know the hw crtc id (0, 1, 2, ...) from the drm crtc id. Bump the minor version so userspace can enable conditionaly features depend on this.
Signed-off-by: Jerome Glisse jglisse@redhat.com
drivers/gpu/drm/radeon/radeon_drv.c | 3 ++- drivers/gpu/drm/radeon/radeon_kms.c | 18 ++++++++++++++++++ include/drm/radeon_drm.h | 1 + 3 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index b3749d4..df96ace 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -44,9 +44,10 @@ * - 2.1.0 - add square tiling interface * - 2.2.0 - add r6xx/r7xx const buffer support * - 2.3.0 - add MSPOS + 3D texture + r500 VAP regs
- 2.4.0 - add crtc id query
*/ #define KMS_DRIVER_MAJOR 2 -#define KMS_DRIVER_MINOR 3 +#define KMS_DRIVER_MINOR 4 #define KMS_DRIVER_PATCHLEVEL 0 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); int radeon_driver_unload_kms(struct drm_device *dev); diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index d3657dc..04ad452 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@ -98,11 +98,15 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) { struct radeon_device *rdev = dev->dev_private; struct drm_radeon_info *info;
- struct radeon_mode_info *minfo = &rdev->mode_info;
uint32_t *value_ptr; uint32_t value;
- struct drm_crtc *crtc;
- int i, found;
info = data; value_ptr = (uint32_t *)((unsigned long)info->value);
- value = *value_ptr;
switch (info->request) { case RADEON_INFO_DEVICE_ID: value = dev->pci_device; @@ -116,6 +120,20 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) case RADEON_INFO_ACCEL_WORKING: value = rdev->accel_working; break;
- case RADEON_INFO_CRTC_FROM_ID:
- for (i = 0, found = 0; i < 6; i++) {
- crtc = (struct drm_crtc *)minfo->crtcs[i];
- if (crtc && crtc->base.id == value) {
- value = i;
- found = 1;
- break;
- }
- }
- if (!found) {
- DRM_ERROR("unknown crtc id %d\n", value);
Don't drm error or hardcode 6 here.
we have rdev->num_crtc and DRM erroring from a path triggerable directly from a user doing something bad is generally a bad idea.
Dave.