![Stepan Moskovchenko](/assets/img/avatar_default.png)
Qualcomm development of the MSM SOC framebuffer driver has diverged significantly from the driver used by Android. This is a snapshot of our current driver, in all it's agony. We are putting this in staging to help with the process of converging the two drivers. At this point, the driver has been tested only in dumb framebuffer mode. Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org> Signed-off-by: David Brown <davidb@codeaurora.org> Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org> [dwalker@codeaurora.org: added a small compile fix and TODO.] Signed-off-by: Daniel Walker <dwalker@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
202 lines
5.6 KiB
C
202 lines
5.6 KiB
C
/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* * Neither the name of Code Aurora nor
|
|
* the names of its contributors may be used to endorse or promote
|
|
* products derived from this software without specific prior written
|
|
* permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
#ifndef MSM_FB_DEF_H
|
|
#define MSM_FB_DEF_H
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/moduleparam.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/fb.h>
|
|
#include "msm_mdp.h"
|
|
#include <linux/init.h>
|
|
#include <linux/ioport.h>
|
|
#include <linux/device.h>
|
|
#include <linux/dma-mapping.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/workqueue.h>
|
|
#include <linux/string.h>
|
|
#include <linux/version.h>
|
|
#include <linux/proc_fs.h>
|
|
#include <linux/vmalloc.h>
|
|
#include <linux/debugfs.h>
|
|
#include <linux/console.h>
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/time.h>
|
|
#include <linux/init.h>
|
|
#include <linux/interrupt.h>
|
|
#include "linux/proc_fs.h"
|
|
#include <mach/hardware.h>
|
|
#include <linux/io.h>
|
|
#include <linux/fb.h>
|
|
#include <asm/system.h>
|
|
#include <asm/mach-types.h>
|
|
#include <linux/platform_device.h>
|
|
|
|
typedef s64 int64;
|
|
typedef s32 int32;
|
|
typedef s16 int16;
|
|
typedef s8 int8;
|
|
|
|
typedef u64 uint64;
|
|
typedef u32 uint32;
|
|
typedef u16 uint16;
|
|
typedef u8 uint8;
|
|
|
|
typedef s32 int4;
|
|
typedef s16 int2;
|
|
typedef s8 int1;
|
|
|
|
typedef u32 uint4;
|
|
typedef u16 uint2;
|
|
typedef u8 uint1;
|
|
|
|
typedef u32 dword;
|
|
typedef u16 word;
|
|
typedef u8 byte;
|
|
|
|
typedef unsigned int boolean;
|
|
|
|
#ifndef TRUE
|
|
#define TRUE 1
|
|
#endif
|
|
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#endif
|
|
|
|
#define MSM_FB_ENABLE_DBGFS
|
|
#define FEATURE_MDDI
|
|
|
|
#define outp32(addr, val) writel(val, addr)
|
|
#define outp16(addr, val) writew(val, addr)
|
|
#define outp8(addr, val) writeb(val, addr)
|
|
#define outp(addr, val) outp32(addr, val)
|
|
|
|
#ifndef MAX
|
|
#define MAX( x, y ) (((x) > (y)) ? (x) : (y))
|
|
#endif
|
|
|
|
#ifndef MIN
|
|
#define MIN( x, y ) (((x) < (y)) ? (x) : (y))
|
|
#endif
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
#define inp32(addr) readl(addr)
|
|
#define inp16(addr) readw(addr)
|
|
#define inp8(addr) readb(addr)
|
|
#define inp(addr) inp32(addr)
|
|
|
|
#define inpw(port) readw(port)
|
|
#define outpw(port, val) writew(val, port)
|
|
#define inpdw(port) readl(port)
|
|
#define outpdw(port, val) writel(val, port)
|
|
|
|
|
|
#define clk_busy_wait(x) msleep_interruptible((x)/1000)
|
|
|
|
#define memory_barrier()
|
|
|
|
#define assert(expr) \
|
|
if(!(expr)) { \
|
|
printk(KERN_ERR "msm_fb: assertion failed! %s,%s,%s,line=%d\n",\
|
|
#expr, __FILE__, __func__, __LINE__); \
|
|
}
|
|
|
|
#define ASSERT(x) assert(x)
|
|
|
|
#define DISP_EBI2_LOCAL_DEFINE
|
|
#ifdef DISP_EBI2_LOCAL_DEFINE
|
|
#define LCD_PRIM_BASE_PHYS 0x98000000
|
|
#define LCD_SECD_BASE_PHYS 0x9c000000
|
|
#define EBI2_PRIM_LCD_RS_PIN 0x20000
|
|
#define EBI2_SECD_LCD_RS_PIN 0x20000
|
|
|
|
#define EBI2_PRIM_LCD_CLR 0xC0
|
|
#define EBI2_PRIM_LCD_SEL 0x40
|
|
|
|
#define EBI2_SECD_LCD_CLR 0x300
|
|
#define EBI2_SECD_LCD_SEL 0x100
|
|
#endif
|
|
|
|
extern u32 msm_fb_msg_level;
|
|
|
|
/*
|
|
* Message printing priorities:
|
|
* LEVEL 0 KERN_EMERG (highest priority)
|
|
* LEVEL 1 KERN_ALERT
|
|
* LEVEL 2 KERN_CRIT
|
|
* LEVEL 3 KERN_ERR
|
|
* LEVEL 4 KERN_WARNING
|
|
* LEVEL 5 KERN_NOTICE
|
|
* LEVEL 6 KERN_INFO
|
|
* LEVEL 7 KERN_DEBUG (Lowest priority)
|
|
*/
|
|
#define MSM_FB_EMERG(msg, ...) \
|
|
if (msm_fb_msg_level > 0) \
|
|
printk(KERN_EMERG msg, ## __VA_ARGS__);
|
|
#define MSM_FB_ALERT(msg, ...) \
|
|
if (msm_fb_msg_level > 1) \
|
|
printk(KERN_ALERT msg, ## __VA_ARGS__);
|
|
#define MSM_FB_CRIT(msg, ...) \
|
|
if (msm_fb_msg_level > 2) \
|
|
printk(KERN_CRIT msg, ## __VA_ARGS__);
|
|
#define MSM_FB_ERR(msg, ...) \
|
|
if (msm_fb_msg_level > 3) \
|
|
printk(KERN_ERR msg, ## __VA_ARGS__);
|
|
#define MSM_FB_WARNING(msg, ...) \
|
|
if (msm_fb_msg_level > 4) \
|
|
printk(KERN_WARNING msg, ## __VA_ARGS__);
|
|
#define MSM_FB_NOTICE(msg, ...) \
|
|
if (msm_fb_msg_level > 5) \
|
|
printk(KERN_NOTICE msg, ## __VA_ARGS__);
|
|
#define MSM_FB_INFO(msg, ...) \
|
|
if (msm_fb_msg_level > 6) \
|
|
printk(KERN_INFO msg, ## __VA_ARGS__);
|
|
#define MSM_FB_DEBUG(msg, ...) \
|
|
if (msm_fb_msg_level > 7) \
|
|
printk(KERN_DEBUG msg, ## __VA_ARGS__);
|
|
|
|
#ifdef MSM_FB_C
|
|
unsigned char *msm_mdp_base;
|
|
unsigned char *msm_pmdh_base;
|
|
unsigned char *msm_emdh_base;
|
|
#else
|
|
extern unsigned char *msm_mdp_base;
|
|
extern unsigned char *msm_pmdh_base;
|
|
extern unsigned char *msm_emdh_base;
|
|
#endif
|
|
|
|
#endif /* MSM_FB_DEF_H */
|