export output name to userspace

main
David Airlie 2007-04-10 16:25:31 +10:00
parent 40bd6dcd86
commit 1e39dc4323
4 changed files with 11 additions and 5 deletions

View File

@ -40,6 +40,7 @@
#include "xf86drmMode.h"
#include "xf86drm.h"
#include <drm.h>
#include <string.h>
/*
* Util functions
@ -385,7 +386,8 @@ drmModeOutputPtr drmModeGetOutput(int fd, uint32_t output_id)
r->crtcs = out.crtcs;
r->clones = out.clones;
r->modes = drmAllocCpy(out.modes, out.count_modes, sizeof(uint32_t));
strncpy(r->name, out.name, DRM_OUTPUT_NAME_LEN);
r->name[DRM_OUTPUT_NAME_LEN-1] = 0;
return r;
err_allocs:

View File

@ -120,7 +120,7 @@ typedef enum {
typedef struct _drmModeOutput {
unsigned int crtc; /**< Crtc currently connected to */
unsigned char name[DRM_OUTPUT_NAME_LEN];
drmModeConnection connection;
uint32_t mmWidth, mmHeight; /**< HxW in millimeters */
drmModeSubPixel subpixel;

View File

@ -838,16 +838,19 @@ int drm_mode_getoutput(struct inode *inode, struct file *filp,
if (copy_from_user(&out_resp, argp, sizeof(out_resp)))
return -EFAULT;
DRM_DEBUG("output id %d\n", out_resp.output);
DRM_DEBUG("output id %d:\n", out_resp.output);
output= idr_find(&dev->mode_config.crtc_idr, out_resp.output);
if (!output || (output->id != out_resp.output))
return -EINVAL;
DRM_DEBUG("about to count modes\n");
DRM_DEBUG("about to count modes: %s\n", output->name);
list_for_each_entry(mode, &output->modes, head)
mode_count++;
DRM_DEBUG("about to count modes %d %d %p\n", mode_count, out_resp.count_modes, output->crtc);
strncpy(out_resp.name, output->name, DRM_OUTPUT_NAME_LEN);
out_resp.name[DRM_OUTPUT_NAME_LEN-1] = 0;
out_resp.mm_width = output->mm_width;
out_resp.mm_height = output->mm_height;
out_resp.subpixel = output->subpixel_order;

View File

@ -891,7 +891,7 @@ typedef union drm_mm_init_arg{
/*
* Drm mode setting
*/
#define DRM_OUTPUT_NAME_LEN 32
#define DRM_DISPLAY_MODE_LEN 32
struct drm_mode_modeinfo {
@ -946,6 +946,7 @@ struct drm_mode_get_output {
unsigned int output; /**< Id */
unsigned int crtc; /**< Id of crtc */
unsigned char name[DRM_OUTPUT_NAME_LEN];
unsigned int connection;
unsigned int mm_width, mm_height; /**< HxW in millimeters */