把**粘上來,肯定能用,照著裸機改的,我剛剛試過的
unsigned int green, unsigned int blue,
unsigned int transp, struct fb_info *info);
static struct fb_ops s3c_lcdfb_ops = ;
static struct fb_info *s3c_lcd;
struct clk *lcd_clk;
static u32 pseudo_palette[16];
/*mini210 lcd regs*/
static volatile unsigned long *gpf0con;
static volatile unsigned long *gpf1con;
static volatile unsigned long *gpf2con;
static volatile unsigned long *gpf3con;
static volatile unsigned long *gpd0con;
static volatile unsigned long *gpd0dat;
static volatile unsigned long *clk_src1;
static volatile unsigned long *clk_div1;
static volatile unsigned long *display_control;
static volatile unsigned long *vidcon0;
static volatile unsigned long *vidcon1;
static volatile unsigned long *vidtcon2;
static volatile unsigned long *wincon0;
static volatile unsigned long *wincon2;
static volatile unsigned long *shadowcon;
static volatile unsigned long *vidosd0a;
static volatile unsigned long *vidosd0b;
static volatile unsigned long *vidosd0c;
static volatile unsigned long *vidw00add0b0;
static volatile unsigned long *vidw00add1b0;
static volatile unsigned long *vidtcon0;
static volatile unsigned long *vidtcon1;
static volatile unsigned long *clk_gate_block;
#define hspw (0)
#define hbpd (40 - 1)
#define hfpd (5 - 1)
#define vspw (0)
#define vbpd (8 - 1)
#define vfpd (8 - 1)
// fb位址
//#define fb_addr (0x23000000)
#define row (272)
#define col (480)
#define hozval (col-1)
#define lineval (row-1)
#define lefttopx 0
#define lefttopy 0
#define rightbotx 479
#define rightboty 271
/* from pxafb.c */
static inline unsigned int chan_to_field(unsigned int chan, struct fb_bitfield *bf)
static void regs_remap(void)
static void regs_unremap(void)
static void lcd_hadinit(void)
static int s3c_lcdfb_setcolreg(unsigned int regno, unsigned int red,
unsigned int green, unsigned int blue,
unsigned int transp, struct fb_info *info)
static int lcd_init(void)
clk_enable(lcd_clk);
// bit[26~28]:使用rgb介面
// bit[18]:rgb 並行
// bit[2]:選擇時鐘源為hclk_dsys=166mhz
*vidcon0 &= ~( (3<<26)|(1<<18)|(1<<2) );
// bit[1]:使能lcd控制器
// bit[0]:當前幀結束後使能lcd控制器
*vidcon0 |= ( (1<<0)|(1<<1) );
// bit[6]:選擇需要分頻
// bit[6~13]:分頻係數為15,即vclk = 166m/(14+1) = 11m
*vidcon0 |= 14<<6 | 1<<4;
// h43-hsd043i9w1.pdf(p13) 時序圖:vsync和hsync都是低脈衝
// s5pv210晶元手冊(p1207) 時序圖:vsync和hsync都是高脈衝有效,所以需要反轉
*vidcon1 |= 1<<5 | 1<<6;
// 設定時序
*vidtcon0 = vbpd<<16 | vfpd<<8 | vspw<<0;
*vidtcon1 = hbpd<<16 | hfpd<<8 | hspw<<0;
// 設定長寬
*vidtcon2 = (lineval << 11) | (hozval << 0);
*wincon0 |= 1<<0;
*wincon0 &= ~(0xf << 2);
*wincon0 |= (0xb<<2) | (1<<15);
// 設定windows1的上下左右
*vidosd0a = (lefttopx<<11) | (lefttopy << 0);
*vidosd0b = (rightbotx<<11) | (rightboty << 0);
*vidosd0c = (lineval + 1) * (hozval + 1);
/* 3.3 分配視訊記憶體(framebuffer), 並把位址告訴lcd控制器 */
s3c_lcd->screen_base = dma_alloc_writecombine(null, s3c_lcd->fix.smem_len, (dma_addr_t *)&(s3c_lcd->fix.smem_start), gfp_kernel);
// 設定fb的位址
*vidw00add0b0 = s3c_lcd->fix.smem_start;
*vidw00add1b0 = s3c_lcd->fix.smem_start+s3c_lcd->fix.smem_len;
// 使能channel 0傳輸資料
*shadowcon = 0x1;
//s3c_lcd->fix.smem_start = ***; /* 視訊記憶體的實體地址 */
/* 啟動lcd */
/* 4. 註冊 */
register_framebuffer(s3c_lcd);
return 0;
}static void lcd_exit(void)
module_init(lcd_init);
module_exit(lcd_exit);
module_license("gpl");
mini2440開發板安裝ssh
首先確定已經 開發板已與路由器相連,並進行了必要的網路配置,可以 ping 通本機 1.google 最新的版本吧 mkdir work fs mkdir p work source zlib zlib 1.2.3.tar.gz ssl openssl 0.9.8d.tar.gz ssh opens...
TQ210開發板 led驅動
在天嵌的tq210開發板上按照天嵌提供的說明書把uboot,核心,檔案系統都做好後,今天嘗試寫乙個led的驅動,1 看電路圖,找到led連線哪個引腳。由圖可見,開發板上的兩個led分別連線在gpc0 3和gpc0 4的兩個引腳上。2 開啟s5pv210的晶元手冊,搜尋一下gpc0con 4 在2 4...
Tiny210開發板wm8960驅動
如果修改了external tinyalsa目錄下的內容,可以通過如下兩種方法去編譯tinyalsa相關的工具。1 m mm mmm external tinyalsa m mm mmm具體的實現在android 4.0.3 r1 build envsetup.sh,所以只要source一遍這個檔案...