]> Git Repo - linux.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6
authorLinus Torvalds <[email protected]>
Thu, 24 Mar 2011 14:56:52 +0000 (07:56 -0700)
committerLinus Torvalds <[email protected]>
Thu, 24 Mar 2011 14:56:52 +0000 (07:56 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6: (140 commits)
  MAINTAINERS: de-orphan fbdev.
  MAINTAINERS: Add file pattern for fb dt bindings.
  video: Move sm501fb devicetree binding documentation to a better place.
  fbcon: fix situation where fbcon gets deinitialised and can't reinit.
  video, sm501: add OF binding to support SM501
  video, sm501: add edid and commandline support
  video, sm501: add I/O functions for use on powerpc
  video: Fix EDID macros H_SYNC_WIDTH and H_SYNC_OFFSET
  fbcon: Bugfix soft cursor detection in Tile Blitting
  video: add missing framebuffer_release in error path
  video: metronomefb: add __devexit_p around reference to metronomefb_remove
  video: hecubafb: add __devexit_p around reference to hecubafb_remove
  drivers:video:aty:radeon_base Fix typo occationally to occasionally
  atmel_lcdfb: add fb_blank function
  atmel_lcdfb: implement inverted contrast pwm
  video: s3c-fb: return proper error if clk_get fails
  uvesafb,vesafb: create WC or WB PAT-entries
  video: ffb: fix ffb_probe error path
  radeonfb: Let hwmon driver probe the "monid" I2C bus
  fbdev: sh_mobile_lcdc: checking NULL instead of IS_ERR()
  ...

1  2 
MAINTAINERS
drivers/video/atmel_lcdfb.c
drivers/video/omap2/displays/panel-taal.c

diff --combined MAINTAINERS
index e11953dc8fa32a438c63850ddf5aa6e032003abc,c7acfb0ef9eeb16456f2f211ae50754d8d0d3462..2f122abecd4fab48959528b94437cdbc8ee1c4c0
@@@ -72,7 -72,7 +72,7 @@@ Descriptions of section entries
        L: Mailing list that is relevant to this area
        W: Web-page with status/info
        Q: Patchwork web based patch tracking system site
 -      T: SCM tree type and location.  Type is one of: git, hg, quilt, stgit.
 +      T: SCM tree type and location.  Type is one of: git, hg, quilt, stgit, topgit.
        S: Status, one of the following:
           Supported:   Someone is actually paid to look after this.
           Maintained:  Someone actually looks after it.
@@@ -288,35 -288,35 +288,35 @@@ F:      sound/pci/ad1889.
  AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/AD5254
 +W:    http://wiki.analog.com/AD5254
  S:    Supported
  F:    drivers/misc/ad525x_dpot.c
  
  AD5398 CURRENT REGULATOR DRIVER (AD5398/AD5821)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/AD5398
 +W:    http://wiki.analog.com/AD5398
  S:    Supported
  F:    drivers/regulator/ad5398.c
  
  AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/AD7142
 +W:    http://wiki.analog.com/AD7142
  S:    Supported
  F:    drivers/input/misc/ad714x.c
  
  AD7877 TOUCHSCREEN DRIVER
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/AD7877
 +W:    http://wiki.analog.com/AD7877
  S:    Supported
  F:    drivers/input/touchscreen/ad7877.c
  
  AD7879 TOUCHSCREEN DRIVER (AD7879/AD7889)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/AD7879
 +W:    http://wiki.analog.com/AD7879
  S:    Supported
  F:    drivers/input/touchscreen/ad7879.c
  
@@@ -342,18 -342,18 +342,18 @@@ F:      drivers/net/wireless/adm8211.
  ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/ADP5520
 +W:    http://wiki.analog.com/ADP5520
  S:    Supported
  F:    drivers/mfd/adp5520.c
  F:    drivers/video/backlight/adp5520_bl.c
 -F:    drivers/led/leds-adp5520.c
 +F:    drivers/leds/leds-adp5520.c
  F:    drivers/gpio/adp5520-gpio.c
  F:    drivers/input/keyboard/adp5520-keys.c
  
  ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/ADP5588
 +W:    http://wiki.analog.com/ADP5588
  S:    Supported
  F:    drivers/input/keyboard/adp5588-keys.c
  F:    drivers/gpio/adp5588-gpio.c
  ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/ADP8860
 +W:    http://wiki.analog.com/ADP8860
  S:    Supported
  F:    drivers/video/backlight/adp8860_bl.c
  
@@@ -388,7 -388,7 +388,7 @@@ F: drivers/hwmon/adt7475.
  ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346)
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
 -W:    http://wiki-analog.com/ADXL345
 +W:    http://wiki.analog.com/ADXL345
  S:    Supported
  F:    drivers/input/misc/adxl34x.c
  
@@@ -528,9 -528,11 +528,9 @@@ F:        drivers/infiniband/hw/amso1100
  ANALOG DEVICES INC ASOC CODEC DRIVERS
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
 -W:    http://wiki-analog.com/
 +W:    http://wiki.analog.com/
  S:    Supported
  F:    sound/soc/codecs/ad1*
 -F:    sound/soc/codecs/adau*
 -F:    sound/soc/codecs/adav*
  F:    sound/soc/codecs/ssm*
  
  ANALOG DEVICES INC ASOC DRIVERS
@@@ -695,8 -697,8 +695,8 @@@ S: Maintaine
  ARM/CLKDEV SUPPORT
  M:    Russell King <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -F:    arch/arm/common/clkdev.c
  F:    arch/arm/include/asm/clkdev.h
 +F:    drivers/clk/clkdev.c
  
  ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT
  M:    Mike Rapoport <[email protected]>
@@@ -917,7 -919,6 +917,7 @@@ F: drivers/mmc/host/msm_sdcc.
  F:    drivers/mmc/host/msm_sdcc.h
  F:    drivers/tty/serial/msm_serial.h
  F:    drivers/tty/serial/msm_serial.c
 +F:    drivers/platform/msm/
  T:    git git://codeaurora.org/quic/kernel/davidb/linux-msm.git
  S:    Maintained
  
@@@ -1077,7 -1078,7 +1077,7 @@@ L:      [email protected]
  S:    Maintained
  
  ARM/TETON BGA MACHINE SUPPORT
 -M:    Mark F. Brown <[email protected]>
 +M:    "Mark F. Brown" <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  
@@@ -1481,7 -1482,7 +1481,7 @@@ F:      drivers/mtd/devices/block2mtd.
  
  BLUETOOTH DRIVERS
  M:    Marcel Holtmann <[email protected]>
 -M:    Gustavo F. Padovan <[email protected]>
 +M:    "Gustavo F. Padovan" <[email protected]>
  L:    [email protected]
  W:    http://www.bluez.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
@@@ -1490,7 -1491,7 +1490,7 @@@ F:      drivers/bluetooth
  
  BLUETOOTH SUBSYSTEM
  M:    Marcel Holtmann <[email protected]>
 -M:    Gustavo F. Padovan <[email protected]>
 +M:    "Gustavo F. Padovan" <[email protected]>
  L:    [email protected]
  W:    http://www.bluez.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
@@@ -2137,12 -2138,6 +2137,12 @@@ F:    Documentation/serial/digiepca.tx
  F:    drivers/char/epca*
  F:    drivers/char/digi*
  
 +DIOLAN U2C-12 I2C DRIVER
 +M:    Guenter Roeck <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-diolan-u2c.c
 +
  DIRECTORY NOTIFICATION (DNOTIFY)
  M:    Eric Paris <[email protected]>
  S:    Maintained
@@@ -2480,7 -2475,8 +2480,7 @@@ F:      include/linux/cb710.
  ENE KB2426 (ENE0100/ENE020XX) INFRARED RECEIVER
  M:    Maxim Levitsky <[email protected]>
  S:    Maintained
 -F:    drivers/media/IR/ene_ir.c
 -F:    drivers/media/IR/ene_ir.h
 +F:    drivers/media/rc/ene_ir.*
  
  EPSON 1355 FRAMEBUFFER DRIVER
  M:    Christopher Hoover <[email protected]>
@@@ -2631,12 -2627,14 +2631,14 @@@ F:   drivers/net/wan/dlci.
  F:    drivers/net/wan/sdla.c
  
  FRAMEBUFFER LAYER
+ M:    Paul Mundt <[email protected]>
  L:    [email protected]
  W:    http://linux-fbdev.sourceforge.net/
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
- S:    Orphan
+ S:    Maintained
  F:    Documentation/fb/
+ F:    Documentation/devicetree/bindings/fb/
  F:    drivers/video/
  F:    include/video/
  F:    include/linux/fb.h
@@@ -2824,6 -2822,7 +2826,6 @@@ F:      include/linux/gigaset_dev.
  
  GPIO SUBSYSTEM
  M:    Grant Likely <[email protected]>
 -L:    [email protected]
  S:    Maintained
  T:    git git://git.secretlab.ca/git/linux-2.6.git
  F:    Documentation/gpio/gpio.txt
@@@ -2846,6 -2845,7 +2848,6 @@@ F:      drivers/platform/x86/hdaps.
  HWPOISON MEMORY FAILURE HANDLING
  M:    Andi Kleen <[email protected]>
  L:    [email protected]
 -L:    [email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6.git hwpoison
  S:    Maintained
  F:    mm/memory-failure.c
@@@ -2946,7 -2946,7 +2948,7 @@@ F:      Documentation/blockdev/cpqarray.tx
  F:    drivers/block/cpqarray.*
  
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
 -M:    Stephen M. Cameron <[email protected]>
 +M:    "Stephen M. Cameron" <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/scsi/hpsa.txt
@@@ -3003,7 -3003,7 +3005,7 @@@ F:      kernel/hrtimer.
  F:    kernel/time/clockevents.c
  F:    kernel/time/tick*.*
  F:    kernel/time/timer_*.c
 -F     include/linux/clockevents.h
 +F:    include/linux/clockevents.h
  F:    include/linux/hrtimer.h
  
  HIGH-SPEED SCC DRIVER FOR AX.25
  S:    Supported
  F:    drivers/idle/i7300_idle.c
  
 -IEEE 1394 SUBSYSTEM
 -M:    Stefan Richter <[email protected]>
 -L:    [email protected]
 -W:    http://ieee1394.wiki.kernel.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
 -S:    Obsolete
 -F:    Documentation/debugging-via-ohci1394.txt
 -F:    drivers/ieee1394/
 -
  IEEE 802.15.4 SUBSYSTEM
  M:    Dmitry Eremin-Solenikov <[email protected]>
  M:    Sergey Lapin <[email protected]>
@@@ -4219,7 -4228,7 +4221,7 @@@ F:      Documentation/serial/moxa-smarti
  F:    drivers/char/mxser.*
  
  MSI LAPTOP SUPPORT
 -M:    Lee, Chun-Yi <[email protected]>
 +M:    "Lee, Chun-Yi" <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/msi-laptop.c
@@@ -4535,14 -4544,14 +4537,14 @@@ S:   Maintaine
  F:    sound/soc/omap/
  
  OMAP FRAMEBUFFER SUPPORT
- M:    Tomi Valkeinen <tomi.valkeinen@nokia.com>
+ M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/video/omap/
  
  OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2)
- M:    Tomi Valkeinen <tomi.valkeinen@nokia.com>
+ M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -4714,6 -4723,7 +4716,6 @@@ F:      drivers/i2c/busses/i2c-pasemi.
  
  PADATA PARALLEL EXECUTION MECHANISM
  M:    Steffen Klassert <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    kernel/padata.c
@@@ -4863,6 -4873,7 +4865,6 @@@ F:      include/crypto/pcrypt.
  PER-CPU MEMORY ALLOCATOR
  M:    Tejun Heo <[email protected]>
  M:    Christoph Lameter <[email protected]>
 -L:    [email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git
  S:    Maintained
  F:    include/linux/percpu*.h
@@@ -5421,6 -5432,7 +5423,6 @@@ S:      Supporte
  F:    include/linux/clocksource.h
  F:    include/linux/time.h
  F:    include/linux/timex.h
 -F:    include/linux/timekeeping.h
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
  F:    kernel/time/ntp.c
@@@ -5508,7 -5520,7 +5510,7 @@@ SCx200 CPU SUPPOR
  M:    Jim Cromie <[email protected]>
  S:    Odd Fixes
  F:    Documentation/i2c/busses/scx200_acb
 -F:    arch/x86/kernel/scx200_32.c
 +F:    arch/x86/platform/scx200/
  F:    drivers/watchdog/scx200_wdt.c
  F:    drivers/i2c/busses/scx200*
  F:    drivers/mtd/maps/scx200_docflash.c
@@@ -5652,13 -5664,24 +5654,13 @@@ M:   Robin Holt <[email protected]
  S:    Maintained
  F:    drivers/misc/sgi-xp/
  
 -SHARP LH SUPPORT (LH7952X & LH7A40X)
 -M:    Marc Singer <[email protected]>
 -W:    http://projects.buici.com/arm
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen
 -F:    arch/arm/mach-lh7a40x/
 -F:    drivers/tty/serial/serial_lh7a40x.c
 -F:    drivers/usb/gadget/lh7a40*
 -F:    drivers/usb/host/ohci-lh7a40*
 -
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <[email protected]>
  L:    [email protected]
  W:    http://simplefirmware.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6.git
  S:    Supported
 -F:    arch/x86/kernel/*sfi*
 +F:    arch/x86/platform/sfi/
  F:    drivers/sfi/
  F:    include/linux/sfi*.h
  
@@@ -6466,11 -6489,12 +6468,11 @@@ S:   Maintaine
  F:    drivers/net/usb/rtl8150.c
  
  USB SE401 DRIVER
 -M:    Jeroen Vreeken <[email protected]>
  L:    [email protected]
  W:    http://www.chello.nl/~j.vreeken/se401/
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/video4linux/se401.txt
 -F:    drivers/media/video/se401.*
 +F:    drivers/staging/se401/
  
  USB SERIAL BELKIN F5U103 DRIVER
  M:    William Greathouse <[email protected]>
@@@ -6820,7 -6844,7 +6822,7 @@@ F:      drivers/scsi/wd7000.
  WINBOND CIR DRIVER
  M:    David Härdeman <[email protected]>
  S:    Maintained
 -F:    drivers/input/misc/winbond-cir.c
 +F:    drivers/media/rc/winbond-cir.c
  
  WIMAX STACK
  M:    Inaky Perez-Gonzalez <[email protected]>
@@@ -6897,6 -6921,7 +6899,6 @@@ F:      sound/soc/codecs/wm
  
  WORKQUEUE
  M:    Tejun Heo <[email protected]>
 -L:    [email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git
  S:    Maintained
  F:    include/linux/workqueue.h
index 4b4e8dadd6b27a9f3a05429dda3a798e1b95acc5,59654e29e205500ec93485e1231473bb7a5b9828..ccecf99745873327b1c373d677e8f0b2e49921c1
@@@ -68,7 -68,7 +68,7 @@@ static void atmel_lcdfb_update_dma2d(st
  }
  #endif
  
- static const u32 contrast_ctr = ATMEL_LCDC_PS_DIV8
+ static u32 contrast_ctr = ATMEL_LCDC_PS_DIV8
                | ATMEL_LCDC_POL_POSITIVE
                | ATMEL_LCDC_ENA_PWMENABLE;
  
@@@ -127,7 -127,6 +127,7 @@@ static void init_backlight(struct atmel
                return;
  
        memset(&props, 0, sizeof(struct backlight_properties));
 +      props.type = BACKLIGHT_RAW;
        props.max_brightness = 0xff;
        bl = backlight_device_register("backlight", &sinfo->pdev->dev, sinfo,
                                       &atmel_lcdc_bl_ops, &props);
@@@ -164,6 -163,10 +164,10 @@@ static void exit_backlight(struct atmel
  
  static void init_contrast(struct atmel_lcdfb_info *sinfo)
  {
+       /* contrast pwm can be 'inverted' */
+       if (sinfo->lcdcon_pol_negative)
+                       contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE);
        /* have some default contrast/backlight settings */
        lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);
        lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);
@@@ -711,11 -714,35 +715,35 @@@ static int atmel_lcdfb_pan_display(stru
        return 0;
  }
  
+ static int atmel_lcdfb_blank(int blank_mode, struct fb_info *info)
+ {
+       struct atmel_lcdfb_info *sinfo = info->par;
+       switch (blank_mode) {
+       case FB_BLANK_UNBLANK:
+       case FB_BLANK_NORMAL:
+               atmel_lcdfb_start(sinfo);
+               break;
+       case FB_BLANK_VSYNC_SUSPEND:
+       case FB_BLANK_HSYNC_SUSPEND:
+               break;
+       case FB_BLANK_POWERDOWN:
+               atmel_lcdfb_stop(sinfo);
+               break;
+       default:
+               return -EINVAL;
+       }
+       /* let fbcon do a soft blank for us */
+       return ((blank_mode == FB_BLANK_NORMAL) ? 1 : 0);
+ }
  static struct fb_ops atmel_lcdfb_ops = {
        .owner          = THIS_MODULE,
        .fb_check_var   = atmel_lcdfb_check_var,
        .fb_set_par     = atmel_lcdfb_set_par,
        .fb_setcolreg   = atmel_lcdfb_setcolreg,
+       .fb_blank       = atmel_lcdfb_blank,
        .fb_pan_display = atmel_lcdfb_pan_display,
        .fb_fillrect    = cfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
@@@ -817,6 -844,7 +845,7 @@@ static int __init atmel_lcdfb_probe(str
                sinfo->guard_time = pdata_sinfo->guard_time;
                sinfo->smem_len = pdata_sinfo->smem_len;
                sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight;
+               sinfo->lcdcon_pol_negative = pdata_sinfo->lcdcon_pol_negative;
                sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode;
        } else {
                dev_err(dev, "cannot get default configuration\n");
index c74e8b778ba120656622683941ed434920bfd43d,abdfdd81001fda87120cc2e45ecf981a6981a116..adc9900458e1cd7b0e627bb9fb4e9bc16f0b7175
@@@ -218,6 -218,8 +218,8 @@@ struct taal_data 
                u16 w;
                u16 h;
        } update_region;
+       int channel;
        struct delayed_work te_timeout_work;
  
        bool use_dsi_bl;
@@@ -257,12 -259,12 +259,12 @@@ static void hw_guard_wait(struct taal_d
        }
  }
  
- static int taal_dcs_read_1(u8 dcs_cmd, u8 *data)
+ static int taal_dcs_read_1(struct taal_data *td, u8 dcs_cmd, u8 *data)
  {
        int r;
        u8 buf[1];
  
-       r = dsi_vc_dcs_read(TCH, dcs_cmd, buf, 1);
+       r = dsi_vc_dcs_read(td->channel, dcs_cmd, buf, 1);
  
        if (r < 0)
                return r;
        return 0;
  }
  
- static int taal_dcs_write_0(u8 dcs_cmd)
+ static int taal_dcs_write_0(struct taal_data *td, u8 dcs_cmd)
  {
-       return dsi_vc_dcs_write(TCH, &dcs_cmd, 1);
+       return dsi_vc_dcs_write(td->channel, &dcs_cmd, 1);
  }
  
- static int taal_dcs_write_1(u8 dcs_cmd, u8 param)
+ static int taal_dcs_write_1(struct taal_data *td, u8 dcs_cmd, u8 param)
  {
        u8 buf[2];
        buf[0] = dcs_cmd;
        buf[1] = param;
-       return dsi_vc_dcs_write(TCH, buf, 2);
+       return dsi_vc_dcs_write(td->channel, buf, 2);
  }
  
  static int taal_sleep_in(struct taal_data *td)
        hw_guard_wait(td);
  
        cmd = DCS_SLEEP_IN;
-       r = dsi_vc_dcs_write_nosync(TCH, &cmd, 1);
+       r = dsi_vc_dcs_write_nosync(td->channel, &cmd, 1);
        if (r)
                return r;
  
@@@ -312,7 -314,7 +314,7 @@@ static int taal_sleep_out(struct taal_d
  
        hw_guard_wait(td);
  
-       r = taal_dcs_write_0(DCS_SLEEP_OUT);
+       r = taal_dcs_write_0(td, DCS_SLEEP_OUT);
        if (r)
                return r;
  
        return 0;
  }
  
- static int taal_get_id(u8 *id1, u8 *id2, u8 *id3)
+ static int taal_get_id(struct taal_data *td, u8 *id1, u8 *id2, u8 *id3)
  {
        int r;
  
-       r = taal_dcs_read_1(DCS_GET_ID1, id1);
+       r = taal_dcs_read_1(td, DCS_GET_ID1, id1);
        if (r)
                return r;
-       r = taal_dcs_read_1(DCS_GET_ID2, id2);
+       r = taal_dcs_read_1(td, DCS_GET_ID2, id2);
        if (r)
                return r;
-       r = taal_dcs_read_1(DCS_GET_ID3, id3);
+       r = taal_dcs_read_1(td, DCS_GET_ID3, id3);
        if (r)
                return r;
  
        return 0;
  }
  
- static int taal_set_addr_mode(u8 rotate, bool mirror)
+ static int taal_set_addr_mode(struct taal_data *td, u8 rotate, bool mirror)
  {
        int r;
        u8 mode;
        int b5, b6, b7;
  
-       r = taal_dcs_read_1(DCS_READ_MADCTL, &mode);
+       r = taal_dcs_read_1(td, DCS_READ_MADCTL, &mode);
        if (r)
                return r;
  
        mode &= ~((1<<7) | (1<<6) | (1<<5));
        mode |= (b7 << 7) | (b6 << 6) | (b5 << 5);
  
-       return taal_dcs_write_1(DCS_MEM_ACC_CTRL, mode);
+       return taal_dcs_write_1(td, DCS_MEM_ACC_CTRL, mode);
  }
  
- static int taal_set_update_window(u16 x, u16 y, u16 w, u16 h)
+ static int taal_set_update_window(struct taal_data *td,
+               u16 x, u16 y, u16 w, u16 h)
  {
        int r;
        u16 x1 = x;
        buf[3] = (x2 >> 8) & 0xff;
        buf[4] = (x2 >> 0) & 0xff;
  
-       r = dsi_vc_dcs_write_nosync(TCH, buf, sizeof(buf));
+       r = dsi_vc_dcs_write_nosync(td->channel, buf, sizeof(buf));
        if (r)
                return r;
  
        buf[3] = (y2 >> 8) & 0xff;
        buf[4] = (y2 >> 0) & 0xff;
  
-       r = dsi_vc_dcs_write_nosync(TCH, buf, sizeof(buf));
+       r = dsi_vc_dcs_write_nosync(td->channel, buf, sizeof(buf));
        if (r)
                return r;
  
-       dsi_vc_send_bta_sync(TCH);
+       dsi_vc_send_bta_sync(td->channel);
  
        return r;
  }
@@@ -439,7 -442,7 +442,7 @@@ static int taal_bl_update_status(struc
        if (td->use_dsi_bl) {
                if (td->enabled) {
                        dsi_bus_lock();
-                       r = taal_dcs_write_1(DCS_BRIGHTNESS, level);
+                       r = taal_dcs_write_1(td, DCS_BRIGHTNESS, level);
                        dsi_bus_unlock();
                } else {
                        r = 0;
@@@ -502,7 -505,7 +505,7 @@@ static ssize_t taal_num_errors_show(str
  
        if (td->enabled) {
                dsi_bus_lock();
-               r = taal_dcs_read_1(DCS_READ_NUM_ERRORS, &errors);
+               r = taal_dcs_read_1(td, DCS_READ_NUM_ERRORS, &errors);
                dsi_bus_unlock();
        } else {
                r = -ENODEV;
@@@ -528,7 -531,7 +531,7 @@@ static ssize_t taal_hw_revision_show(st
  
        if (td->enabled) {
                dsi_bus_lock();
-               r = taal_get_id(&id1, &id2, &id3);
+               r = taal_get_id(td, &id1, &id2, &id3);
                dsi_bus_unlock();
        } else {
                r = -ENODEV;
@@@ -590,7 -593,7 +593,7 @@@ static ssize_t store_cabc_mode(struct d
        if (td->enabled) {
                dsi_bus_lock();
                if (!td->cabc_broken)
-                       taal_dcs_write_1(DCS_WRITE_CABC, i);
+                       taal_dcs_write_1(td, DCS_WRITE_CABC, i);
                dsi_bus_unlock();
        }
  
@@@ -729,8 -732,6 +732,8 @@@ static int taal_probe(struct omap_dss_d
                props.max_brightness = 255;
        else
                props.max_brightness = 127;
 +
 +      props.type = BACKLIGHT_RAW;
        bldev = backlight_device_register("taal", &dssdev->dev, dssdev,
                                          &taal_bl_ops, &props);
        if (IS_ERR(bldev)) {
                dev_dbg(&dssdev->dev, "Using GPIO TE\n");
        }
  
+       r = omap_dsi_request_vc(dssdev, &td->channel);
+       if (r) {
+               dev_err(&dssdev->dev, "failed to get virtual channel\n");
+               goto err_req_vc;
+       }
+       r = omap_dsi_set_vc_id(dssdev, td->channel, TCH);
+       if (r) {
+               dev_err(&dssdev->dev, "failed to set VC_ID\n");
+               goto err_vc_id;
+       }
        r = sysfs_create_group(&dssdev->dev.kobj, &taal_attr_group);
        if (r) {
                dev_err(&dssdev->dev, "failed to create sysfs files\n");
-               goto err_sysfs;
+               goto err_vc_id;
        }
  
        return 0;
- err_sysfs:
+ err_vc_id:
+       omap_dsi_release_vc(dssdev, td->channel);
+ err_req_vc:
        if (panel_data->use_ext_te)
                free_irq(gpio_to_irq(panel_data->ext_te_gpio), dssdev);
  err_irq:
@@@ -810,6 -826,7 +828,7 @@@ static void taal_remove(struct omap_dss
        dev_dbg(&dssdev->dev, "remove\n");
  
        sysfs_remove_group(&dssdev->dev.kobj, &taal_attr_group);
+       omap_dsi_release_vc(dssdev, td->channel);
  
        if (panel_data->use_ext_te) {
                int gpio = panel_data->ext_te_gpio;
@@@ -848,13 -865,13 +867,13 @@@ static int taal_power_on(struct omap_ds
  
        taal_hw_reset(dssdev);
  
-       omapdss_dsi_vc_enable_hs(TCH, false);
+       omapdss_dsi_vc_enable_hs(td->channel, false);
  
        r = taal_sleep_out(td);
        if (r)
                goto err;
  
-       r = taal_get_id(&id1, &id2, &id3);
+       r = taal_get_id(td, &id1, &id2, &id3);
        if (r)
                goto err;
  
                (id2 == 0x00 || id2 == 0xff || id2 == 0x81))
                td->cabc_broken = true;
  
-       r = taal_dcs_write_1(DCS_BRIGHTNESS, 0xff);
+       r = taal_dcs_write_1(td, DCS_BRIGHTNESS, 0xff);
        if (r)
                goto err;
  
-       r = taal_dcs_write_1(DCS_CTRL_DISPLAY,
+       r = taal_dcs_write_1(td, DCS_CTRL_DISPLAY,
                        (1<<2) | (1<<5));       /* BL | BCTRL */
        if (r)
                goto err;
  
-       r = taal_dcs_write_1(DCS_PIXEL_FORMAT, 0x7); /* 24bit/pixel */
+       r = taal_dcs_write_1(td, DCS_PIXEL_FORMAT, 0x7); /* 24bit/pixel */
        if (r)
                goto err;
  
-       r = taal_set_addr_mode(td->rotate, td->mirror);
+       r = taal_set_addr_mode(td, td->rotate, td->mirror);
        if (r)
                goto err;
  
        if (!td->cabc_broken) {
-               r = taal_dcs_write_1(DCS_WRITE_CABC, td->cabc_mode);
+               r = taal_dcs_write_1(td, DCS_WRITE_CABC, td->cabc_mode);
                if (r)
                        goto err;
        }
  
-       r = taal_dcs_write_0(DCS_DISPLAY_ON);
+       r = taal_dcs_write_0(td, DCS_DISPLAY_ON);
        if (r)
                goto err;
  
                td->intro_printed = true;
        }
  
-       omapdss_dsi_vc_enable_hs(TCH, true);
+       omapdss_dsi_vc_enable_hs(td->channel, true);
  
        return 0;
  err:
@@@ -923,7 -940,7 +942,7 @@@ static void taal_power_off(struct omap_
        struct taal_data *td = dev_get_drvdata(&dssdev->dev);
        int r;
  
-       r = taal_dcs_write_0(DCS_DISPLAY_OFF);
+       r = taal_dcs_write_0(td, DCS_DISPLAY_OFF);
        if (!r) {
                r = taal_sleep_in(td);
                /* HACK: wait a bit so that the message goes through */
@@@ -1091,7 -1108,7 +1110,7 @@@ static irqreturn_t taal_te_isr(int irq
        if (old) {
                cancel_delayed_work(&td->te_timeout_work);
  
-               r = omap_dsi_update(dssdev, TCH,
+               r = omap_dsi_update(dssdev, td->channel,
                                td->update_region.x,
                                td->update_region.y,
                                td->update_region.w,
@@@ -1141,7 -1158,7 +1160,7 @@@ static int taal_update(struct omap_dss_
        if (r)
                goto err;
  
-       r = taal_set_update_window(x, y, w, h);
+       r = taal_set_update_window(td, x, y, w, h);
        if (r)
                goto err;
  
                                msecs_to_jiffies(250));
                atomic_set(&td->do_update, 1);
        } else {
-               r = omap_dsi_update(dssdev, TCH, x, y, w, h,
+               r = omap_dsi_update(dssdev, td->channel, x, y, w, h,
                                taal_framedone_cb, dssdev);
                if (r)
                        goto err;
@@@ -1193,9 -1210,9 +1212,9 @@@ static int _taal_enable_te(struct omap_
        int r;
  
        if (enable)
-               r = taal_dcs_write_1(DCS_TEAR_ON, 0);
+               r = taal_dcs_write_1(td, DCS_TEAR_ON, 0);
        else
-               r = taal_dcs_write_0(DCS_TEAR_OFF);
+               r = taal_dcs_write_0(td, DCS_TEAR_OFF);
  
        if (!panel_data->use_ext_te)
                omapdss_dsi_enable_te(dssdev, enable);
@@@ -1265,7 -1282,7 +1284,7 @@@ static int taal_rotate(struct omap_dss_
        dsi_bus_lock();
  
        if (td->enabled) {
-               r = taal_set_addr_mode(rotate, td->mirror);
+               r = taal_set_addr_mode(td, rotate, td->mirror);
                if (r)
                        goto err;
        }
@@@ -1308,7 -1325,7 +1327,7 @@@ static int taal_mirror(struct omap_dss_
  
        dsi_bus_lock();
        if (td->enabled) {
-               r = taal_set_addr_mode(td->rotate, enable);
+               r = taal_set_addr_mode(td, td->rotate, enable);
                if (r)
                        goto err;
        }
@@@ -1352,13 -1369,13 +1371,13 @@@ static int taal_run_test(struct omap_ds
  
        dsi_bus_lock();
  
-       r = taal_dcs_read_1(DCS_GET_ID1, &id1);
+       r = taal_dcs_read_1(td, DCS_GET_ID1, &id1);
        if (r)
                goto err2;
-       r = taal_dcs_read_1(DCS_GET_ID2, &id2);
+       r = taal_dcs_read_1(td, DCS_GET_ID2, &id2);
        if (r)
                goto err2;
-       r = taal_dcs_read_1(DCS_GET_ID3, &id3);
+       r = taal_dcs_read_1(td, DCS_GET_ID3, &id3);
        if (r)
                goto err2;
  
@@@ -1406,9 -1423,9 +1425,9 @@@ static int taal_memory_read(struct omap
        else
                plen = 2;
  
-       taal_set_update_window(x, y, w, h);
+       taal_set_update_window(td, x, y, w, h);
  
-       r = dsi_vc_set_max_rx_packet_size(TCH, plen);
+       r = dsi_vc_set_max_rx_packet_size(td->channel, plen);
        if (r)
                goto err2;
  
                u8 dcs_cmd = first ? 0x2e : 0x3e;
                first = 0;
  
-               r = dsi_vc_dcs_read(TCH, dcs_cmd,
+               r = dsi_vc_dcs_read(td->channel, dcs_cmd,
                                buf + buf_used, size - buf_used);
  
                if (r < 0) {
        r = buf_used;
  
  err3:
-       dsi_vc_set_max_rx_packet_size(TCH, 1);
+       dsi_vc_set_max_rx_packet_size(td->channel, 1);
  err2:
        dsi_bus_unlock();
  err1:
@@@ -1468,7 -1485,7 +1487,7 @@@ static void taal_esd_work(struct work_s
  
        dsi_bus_lock();
  
-       r = taal_dcs_read_1(DCS_RDDSDR, &state1);
+       r = taal_dcs_read_1(td, DCS_RDDSDR, &state1);
        if (r) {
                dev_err(&dssdev->dev, "failed to read Taal status\n");
                goto err;
                goto err;
        }
  
-       r = taal_dcs_read_1(DCS_RDDSDR, &state2);
+       r = taal_dcs_read_1(td, DCS_RDDSDR, &state2);
        if (r) {
                dev_err(&dssdev->dev, "failed to read Taal status\n");
                goto err;
        /* Self-diagnostics result is also shown on TE GPIO line. We need
         * to re-enable TE after self diagnostics */
        if (td->te_enabled && panel_data->use_ext_te) {
-               r = taal_dcs_write_1(DCS_TEAR_ON, 0);
+               r = taal_dcs_write_1(td, DCS_TEAR_ON, 0);
                if (r)
                        goto err;
        }
This page took 0.115478 seconds and 4 git commands to generate.