[PATCH] drm/radeon/kms: add query for crtc hw id from crtc id to get info

Alex Deucher alexdeucher at gmail.com
Fri May 7 09:25:40 PDT 2010


On Fri, May 7, 2010 at 11:40 AM, Alex Deucher <alexdeucher at gmail.com> wrote:
> On Fri, May 7, 2010 at 11:18 AM, Jerome Glisse <jglisse at 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.
>
> Just curious what we need this for?  Couldn't the id be handled in the
> drm via relocs?
>

Nevermind, just saw the ddx patch.

> Alex
>
>>
>> Signed-off-by: Jerome Glisse <jglisse at 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);
>> +                       return -EINVAL;
>> +               }
>> +               break;
>>        default:
>>                DRM_DEBUG("Invalid request %d\n", info->request);
>>                return -EINVAL;
>> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
>> index 81e614b..3ff9fc0 100644
>> --- a/include/drm/radeon_drm.h
>> +++ b/include/drm/radeon_drm.h
>> @@ -902,6 +902,7 @@ struct drm_radeon_cs {
>>  #define RADEON_INFO_NUM_GB_PIPES       0x01
>>  #define RADEON_INFO_NUM_Z_PIPES        0x02
>>  #define RADEON_INFO_ACCEL_WORKING      0x03
>> +#define RADEON_INFO_CRTC_FROM_ID       0x04
>>
>>  struct drm_radeon_info {
>>        uint32_t                request;
>> --
>> 1.7.0.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
>


More information about the dri-devel mailing list