linux/drivers/staging/olpc_dcon/olpc_dcon.h
<<
>>
Prefs
   1#ifndef OLPC_DCON_H_
   2#define OLPC_DCON_H_
   3
   4#include <linux/notifier.h>
   5#include <linux/workqueue.h>
   6
   7/* DCON registers */
   8
   9#define DCON_REG_ID              0
  10#define DCON_REG_MODE            1
  11
  12#define MODE_PASSTHRU   (1<<0)
  13#define MODE_SLEEP      (1<<1)
  14#define MODE_SLEEP_AUTO (1<<2)
  15#define MODE_BL_ENABLE  (1<<3)
  16#define MODE_BLANK      (1<<4)
  17#define MODE_CSWIZZLE   (1<<5)
  18#define MODE_COL_AA     (1<<6)
  19#define MODE_MONO_LUMA  (1<<7)
  20#define MODE_SCAN_INT   (1<<8)
  21#define MODE_CLOCKDIV   (1<<9)
  22#define MODE_DEBUG      (1<<14)
  23#define MODE_SELFTEST   (1<<15)
  24
  25#define DCON_REG_HRES           2
  26#define DCON_REG_HTOTAL         3
  27#define DCON_REG_HSYNC_WIDTH    4
  28#define DCON_REG_VRES           5
  29#define DCON_REG_VTOTAL         6
  30#define DCON_REG_VSYNC_WIDTH    7
  31#define DCON_REG_TIMEOUT        8
  32#define DCON_REG_SCAN_INT       9
  33#define DCON_REG_BRIGHT         10
  34
  35/* Status values */
  36
  37#define DCONSTAT_SCANINT        0
  38#define DCONSTAT_SCANINT_DCON   1
  39#define DCONSTAT_DISPLAYLOAD    2
  40#define DCONSTAT_MISSED         3
  41
  42/* Source values */
  43
  44#define DCON_SOURCE_DCON        0
  45#define DCON_SOURCE_CPU         1
  46
  47/* Interrupt */
  48#define DCON_IRQ                6
  49
  50struct dcon_priv {
  51        struct i2c_client *client;
  52        struct fb_info *fbinfo;
  53        struct backlight_device *bl_dev;
  54
  55        struct work_struct switch_source;
  56        struct notifier_block reboot_nb;
  57        struct notifier_block fbevent_nb;
  58
  59        /* Shadow register for the DCON_REG_MODE register */
  60        u8 disp_mode;
  61
  62        /* The current backlight value - this saves us some smbus traffic */
  63        u8 bl_val;
  64
  65        /* Current source, initialized at probe time */
  66        int curr_src;
  67
  68        /* Desired source */
  69        int pending_src;
  70
  71        /* Variables used during switches */
  72        bool switched;
  73        struct timespec irq_time;
  74        struct timespec load_time;
  75
  76        /* Current output type; true == mono, false == color */
  77        bool mono;
  78        bool asleep;
  79        /* This get set while controlling fb blank state from the driver */
  80        bool ignore_fb_events;
  81};
  82
  83struct dcon_platform_data {
  84        int (*init)(struct dcon_priv *);
  85        void (*bus_stabilize_wiggle)(void);
  86        void (*set_dconload)(int);
  87        u8 (*read_status)(void);
  88};
  89
  90#include <linux/interrupt.h>
  91
  92extern irqreturn_t dcon_interrupt(int irq, void *id);
  93
  94#ifdef CONFIG_FB_OLPC_DCON_1
  95extern struct dcon_platform_data dcon_pdata_xo_1;
  96#endif
  97
  98#ifdef CONFIG_FB_OLPC_DCON_1_5
  99extern struct dcon_platform_data dcon_pdata_xo_1_5;
 100#endif
 101
 102#endif
 103