1 From a9b3500bd14609750a2337e866e1df62627c1bac Mon Sep 17 00:00:00 2001
 
   2 From: Imre Deak <imre.deak@nokia.com>
 
   3 Date: Mon, 20 Apr 2009 14:55:33 +0200
 
   4 Subject: [PATCH] DSS2: add sysfs entry for seting the rotate type
 
   6 This can help in utilizing VRAM memory better. Since with VRFB rotation
 
   7 we waste a lot of physical memory due to the VRFB HW design, provide the
 
   8 possibility to turn it off and free the extra memory for the use by other
 
  11  drivers/video/omap2/omapfb/omapfb-sysfs.c |   42 ++++++++++++++++++++++++++++-
 
  12  1 files changed, 41 insertions(+), 1 deletions(-)
 
  14 diff --git a/drivers/video/omap2/omapfb/omapfb-sysfs.c b/drivers/video/omap2/omapfb/omapfb-sysfs.c
 
  15 index 2c88718..4e3da42 100644
 
  16 --- a/drivers/video/omap2/omapfb/omapfb-sysfs.c
 
  17 +++ b/drivers/video/omap2/omapfb/omapfb-sysfs.c
 
  18 @@ -43,6 +43,46 @@ static ssize_t show_rotate_type(struct device *dev,
 
  19         return snprintf(buf, PAGE_SIZE, "%d\n", ofbi->rotation_type);
 
  22 +static ssize_t store_rotate_type(struct device *dev,
 
  23 +               struct device_attribute *attr,
 
  24 +               const char *buf, size_t count)
 
  26 +       struct fb_info *fbi = dev_get_drvdata(dev);
 
  27 +       struct omapfb_info *ofbi = FB2OFB(fbi);
 
  28 +       struct omapfb2_device *fbdev = ofbi->fbdev;
 
  29 +       enum omap_dss_rotation_type rot_type;
 
  32 +       rot_type = simple_strtoul(buf, NULL, 0);
 
  34 +       if (rot_type != OMAP_DSS_ROT_DMA && rot_type != OMAP_DSS_ROT_VRFB)
 
  40 +       if (rot_type == ofbi->rotation_type)
 
  44 +       if (ofbi->region.size)
 
  47 +       ofbi->rotation_type = rot_type;
 
  50 +        * Since the VRAM for this FB is not allocated at the moment we don't need to
 
  51 +        * do any further parameter checking at this point.
 
  56 +       omapfb_unlock(fbdev);
 
  62  static ssize_t show_mirror(struct device *dev,
 
  63                 struct device_attribute *attr, char *buf)
 
  65 @@ -327,7 +367,7 @@ static ssize_t show_virt(struct device *dev,
 
  68  static struct device_attribute omapfb_attrs[] = {
 
  69 -       __ATTR(rotate_type, S_IRUGO, show_rotate_type, NULL),
 
  70 +       __ATTR(rotate_type, S_IRUGO | S_IWUSR, show_rotate_type, store_rotate_type),
 
  71         __ATTR(mirror, S_IRUGO | S_IWUSR, show_mirror, store_mirror),
 
  72         __ATTR(size, S_IRUGO | S_IWUSR, show_size, store_size),
 
  73         __ATTR(overlays, S_IRUGO | S_IWUSR, show_overlays, store_overlays),