aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/omap2/omapfb/omapfb-ioctl.c24
-rw-r--r--include/linux/omapfb.h9
2 files changed, 33 insertions, 0 deletions
diff --git a/drivers/video/omap2/omapfb/omapfb-ioctl.c b/drivers/video/omap2/omapfb/omapfb-ioctl.c
index 4c4bafdfaa43..33fc1459a7c9 100644
--- a/drivers/video/omap2/omapfb/omapfb-ioctl.c
+++ b/drivers/video/omap2/omapfb/omapfb-ioctl.c
@@ -483,6 +483,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
483 struct omapfb_memory_read memory_read; 483 struct omapfb_memory_read memory_read;
484 struct omapfb_vram_info vram_info; 484 struct omapfb_vram_info vram_info;
485 struct omapfb_tearsync_info tearsync_info; 485 struct omapfb_tearsync_info tearsync_info;
486 struct omapfb_display_info display_info;
486 } p; 487 } p;
487 488
488 int r = 0; 489 int r = 0;
@@ -741,6 +742,29 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
741 break; 742 break;
742 } 743 }
743 744
745 case OMAPFB_GET_DISPLAY_INFO: {
746 u16 xres, yres;
747
748 DBG("ioctl GET_DISPLAY_INFO\n");
749
750 if (display == NULL) {
751 r = -ENODEV;
752 break;
753 }
754
755 display->get_resolution(display, &xres, &yres);
756
757 p.display_info.xres = xres;
758 p.display_info.yres = yres;
759 p.display_info.width = 0;
760 p.display_info.height = 0;
761
762 if (copy_to_user((void __user *)arg, &p.display_info,
763 sizeof(p.display_info)))
764 r = -EFAULT;
765 break;
766 }
767
744 default: 768 default:
745 dev_err(fbdev->dev, "Unknown ioctl 0x%x\n", cmd); 769 dev_err(fbdev->dev, "Unknown ioctl 0x%x\n", cmd);
746 r = -EINVAL; 770 r = -EINVAL;
diff --git a/include/linux/omapfb.h b/include/linux/omapfb.h
index f46c40ac6d45..9bdd91486b49 100644
--- a/include/linux/omapfb.h
+++ b/include/linux/omapfb.h
@@ -57,6 +57,7 @@
57#define OMAPFB_WAITFORGO OMAP_IO(60) 57#define OMAPFB_WAITFORGO OMAP_IO(60)
58#define OMAPFB_GET_VRAM_INFO OMAP_IOR(61, struct omapfb_vram_info) 58#define OMAPFB_GET_VRAM_INFO OMAP_IOR(61, struct omapfb_vram_info)
59#define OMAPFB_SET_TEARSYNC OMAP_IOW(62, struct omapfb_tearsync_info) 59#define OMAPFB_SET_TEARSYNC OMAP_IOW(62, struct omapfb_tearsync_info)
60#define OMAPFB_GET_DISPLAY_INFO OMAP_IOR(63, struct omapfb_display_info)
60 61
61#define OMAPFB_CAPS_GENERIC_MASK 0x00000fff 62#define OMAPFB_CAPS_GENERIC_MASK 0x00000fff
62#define OMAPFB_CAPS_LCDC_MASK 0x00fff000 63#define OMAPFB_CAPS_LCDC_MASK 0x00fff000
@@ -206,6 +207,14 @@ struct omapfb_tearsync_info {
206 __u16 reserved2; 207 __u16 reserved2;
207}; 208};
208 209
210struct omapfb_display_info {
211 __u16 xres;
212 __u16 yres;
213 __u32 width; /* phys width of the display in micrometers */
214 __u32 height; /* phys height of the display in micrometers */
215 __u32 reserved[5];
216};
217
209#ifdef __KERNEL__ 218#ifdef __KERNEL__
210 219
211#include <plat/board.h> 220#include <plat/board.h>