am3517 lcd 裸机代码
来源:互联网 发布:python入门书籍推荐 编辑:程序博客网 时间:2024/05/19 10:34
#include <common.h>
#include <netdev.h>
#include <asm/io.h>
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <i2c.h>
#include <asm/mach-types.h>
#include <asm/arch/gpio.h>
#include <video_fb.h>
#include "lcd.h"
#define LCD_Y_SIZE 480
#define LCD_X_SIZE 640
static u16 lcd_static_mem[LCD_Y_SIZE][LCD_X_SIZE]; //__attribute__((aligned(0x4)));
//#define LCDDMA_BASE 0x63601000
int omap3_lcd_init(void)
{
// u32 l = pad_read_reg(CONTROL_PADCONF_DSS_PCLK);
pad_write_reg(CONTROL_PADCONF_DSS_PCLK,0x01100110);
pad_write_reg(CONTROL_PADCONF_DSS_VSYNC,0x01000110);
pad_write_reg(CONTROL_PADCONF_DSS_DATA0,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA2,0x01000000);
pad_write_reg(CONTROL_PADCONF_DSS_DATA4,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA6,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA8,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA10,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA12,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA14,0x01000100);
u32 m = clkctrl_read_reg(CM_CLKEN_PLL);
// printf("CM_CLKEN_PLL is %d\n",m);
m |= 0x7 << 16;
clkctrl_write_reg(CM_CLKEN_PLL,m);
clkctrl_write_reg(CM_CLKSEL2_PLL,0x0000E102);
dss_clk_write_reg(CM_CLKSEL_DSS,0x00010002);
dss_clk_write_reg(CM_FCLKEN_DSS, 7);
dss_clk_write_reg(CM_ICLKEN_DSS, 1);
dss_clk_write_reg(CM_AUTOIDLE_DSS, 0);
dss_clk_write_reg(CM_SLEEPDEP_DSS,0);
dss_clk_write_reg(CM_CLKSTCTRL_DSS,0);
dss_write_reg(DSS_SYSCONFIG,0x0002);
while(! dss_read_reg(DSS_SYSSTATUS));
dispc_write_reg(DISPC_CONTROL, 0x00018108 );//change 18309 to 18109 for 16bit per pix
dispc_write_reg(DISPC_SIZE_LCD, 0x01df027f); //size:640*480
dispc_write_reg(DISPC_CONFIG,0x4);
dispc_write_reg(DISPC_TIMING_H, 0x0720101e); //LCD Timing params
dispc_write_reg(DISPC_TIMING_V, 0x02100a03);
dispc_write_reg(DISPC_POL_FREQ, 0x00);
dispc_write_reg(DISPC_DIVISOR, 0x00010001); //maybe need change
// dispc_write_reg(DISPC_GLOBAL_ALPHA, 0x0ff);
dispc_write_reg(DISPC_GFX_SIZE, 0x01df027f);
dispc_write_reg(DISPC_GFX_FIFO_THRESHOLD, 0x03ff0300);
dispc_write_reg(DISPC_GFX_ROW_INC, 0x01);
dispc_write_reg(DISPC_GFX_PIXEL_INC, 0x01);
memset(lcd_static_mem, 0xff, sizeof(lcd_static_mem));
dispc_write_reg(DISPC_GFX_BA0, (unsigned int )lcd_static_mem);
dispc_write_reg(DISPC_GFX_POSITION, 0);
dispc_write_reg(DISPC_GFX_ATTRIBUTES, 0x02d); //change for GFX configuration
dispc_write_reg(DISPC_CONTROL, 0x00018129);
printf("lcd color test\n");
u16 x,y;
for(y=0;y<480;y++)
{
for(x=0;x<640;x++)
lcd_static_mem[y][x]=0x07e0;
}
return 0;
}
#include <netdev.h>
#include <asm/io.h>
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <i2c.h>
#include <asm/mach-types.h>
#include <asm/arch/gpio.h>
#include <video_fb.h>
#include "lcd.h"
#define LCD_Y_SIZE 480
#define LCD_X_SIZE 640
static u16 lcd_static_mem[LCD_Y_SIZE][LCD_X_SIZE]; //__attribute__((aligned(0x4)));
//#define LCDDMA_BASE 0x63601000
int omap3_lcd_init(void)
{
// u32 l = pad_read_reg(CONTROL_PADCONF_DSS_PCLK);
pad_write_reg(CONTROL_PADCONF_DSS_PCLK,0x01100110);
pad_write_reg(CONTROL_PADCONF_DSS_VSYNC,0x01000110);
pad_write_reg(CONTROL_PADCONF_DSS_DATA0,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA2,0x01000000);
pad_write_reg(CONTROL_PADCONF_DSS_DATA4,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA6,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA8,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA10,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA12,0x01000100);
pad_write_reg(CONTROL_PADCONF_DSS_DATA14,0x01000100);
u32 m = clkctrl_read_reg(CM_CLKEN_PLL);
// printf("CM_CLKEN_PLL is %d\n",m);
m |= 0x7 << 16;
clkctrl_write_reg(CM_CLKEN_PLL,m);
clkctrl_write_reg(CM_CLKSEL2_PLL,0x0000E102);
dss_clk_write_reg(CM_CLKSEL_DSS,0x00010002);
dss_clk_write_reg(CM_FCLKEN_DSS, 7);
dss_clk_write_reg(CM_ICLKEN_DSS, 1);
dss_clk_write_reg(CM_AUTOIDLE_DSS, 0);
dss_clk_write_reg(CM_SLEEPDEP_DSS,0);
dss_clk_write_reg(CM_CLKSTCTRL_DSS,0);
dss_write_reg(DSS_SYSCONFIG,0x0002);
while(! dss_read_reg(DSS_SYSSTATUS));
dispc_write_reg(DISPC_CONTROL, 0x00018108 );//change 18309 to 18109 for 16bit per pix
dispc_write_reg(DISPC_SIZE_LCD, 0x01df027f); //size:640*480
dispc_write_reg(DISPC_CONFIG,0x4);
dispc_write_reg(DISPC_TIMING_H, 0x0720101e); //LCD Timing params
dispc_write_reg(DISPC_TIMING_V, 0x02100a03);
dispc_write_reg(DISPC_POL_FREQ, 0x00);
dispc_write_reg(DISPC_DIVISOR, 0x00010001); //maybe need change
// dispc_write_reg(DISPC_GLOBAL_ALPHA, 0x0ff);
dispc_write_reg(DISPC_GFX_SIZE, 0x01df027f);
dispc_write_reg(DISPC_GFX_FIFO_THRESHOLD, 0x03ff0300);
dispc_write_reg(DISPC_GFX_ROW_INC, 0x01);
dispc_write_reg(DISPC_GFX_PIXEL_INC, 0x01);
memset(lcd_static_mem, 0xff, sizeof(lcd_static_mem));
dispc_write_reg(DISPC_GFX_BA0, (unsigned int )lcd_static_mem);
dispc_write_reg(DISPC_GFX_POSITION, 0);
dispc_write_reg(DISPC_GFX_ATTRIBUTES, 0x02d); //change for GFX configuration
dispc_write_reg(DISPC_CONTROL, 0x00018129);
printf("lcd color test\n");
u16 x,y;
for(y=0;y<480;y++)
{
for(x=0;x<640;x++)
lcd_static_mem[y][x]=0x07e0;
}
return 0;
}
- am3517 lcd 裸机代码
- AM3517 CCS v5 裸机程序
- AM3517摄像头采集裸机程序
- AM3517 VRFB LCD屏幕旋转详解
- S3C2440裸机学习 - LCD驱动原理及代码分析[一]
- S3C2440裸机学习- LCD驱动原理及代码分析[二]
- lcd裸机驱动程序设计
- lcd裸机驱动程序设计
- mini2440裸机之LCD
- LCD裸机驱动程序设计 .
- 6410裸机启动LCD
- LCD裸机--驱动程序设计
- S3C2416 LCD裸机配制
- TX2440裸机程序-LCD
- micro2440 LCD裸机测试
- LCD裸机驱动
- S5PV210----裸机LCD驱动
- 裸机LCD汉字显示实现
- textview,slider,switch,segmented ,action sheet,alert,indicator
- 最全的常用常用静态方法类
- chapter3 PL~SQL---1总结
- javascript中相互横向切换展示的窗口效果
- 在linux上开启一个socket服务(一)
- am3517 lcd 裸机代码
- Eclipse进行可视化的GUI开发3大GUI插件
- JSP九大内置对象及四个作用域总结
- java多线程和android平台下的多线程
- JAVA并发编程学习笔记之synchronized
- 有趣的题目
- repo server
- js 仿淘宝首页最新图片幻灯切换效果
- 视频基础知识