2004 lines
64 KiB
C
Executable File
2004 lines
64 KiB
C
Executable File
#include <common.h>
|
|
#include <command.h>
|
|
#include <spi.h>
|
|
#include <spi_flash.h>
|
|
|
|
/* vo */
|
|
#define LOGO_VO_NONE (1)
|
|
#define LOGO_VO_1024x768 (2)
|
|
#define LOGO_VO_1920x1080 (3)
|
|
#define LOGO_VO_PAL (4)
|
|
#define LOGO_VO_NTSC (5)
|
|
#define LOGO_VO_ILI9881 (6)
|
|
#define LOGO_VO_EK79007 (7)
|
|
|
|
#define LOGO_VO_HDMI (LOGO_VO_1920x1080)
|
|
#define LOGO_VO_CVBS (LOGO_VO_NONE)
|
|
#define LOGO_VO_MIPI (LOGO_VO_NONE)
|
|
|
|
/* format */
|
|
#define LOGO_YUV (1)
|
|
#define LOGO_RGB_1555 (2)
|
|
#define LOGO_RGB_8888 (3)
|
|
#define LOGO_FORMAT (LOGO_YUV)
|
|
|
|
|
|
typedef struct {
|
|
uint32_t Clock;
|
|
uint32_t Hactvie;
|
|
uint32_t Vactive;
|
|
uint32_t FrameMode;
|
|
uint32_t FrameRate;
|
|
uint32_t PixelRate;
|
|
uint32_t Htotal;
|
|
uint32_t Vtotal;
|
|
uint32_t Hblank;
|
|
uint32_t Vblank;
|
|
uint32_t Hfront;
|
|
uint32_t Hsync;
|
|
uint32_t Hback;
|
|
uint32_t Hpol;
|
|
uint32_t Vfront;
|
|
uint32_t Vsync;
|
|
uint32_t Vback;
|
|
uint32_t Vpol;
|
|
uint32_t Alen;
|
|
uint32_t Aline;
|
|
uint32_t Hlen;
|
|
uint32_t StartBlen;
|
|
uint32_t EndBlen;
|
|
uint32_t TVLine;
|
|
uint32_t TBLineOfs;
|
|
uint32_t TEndBLine;
|
|
uint32_t BVLine;
|
|
uint32_t BBLineOfs;
|
|
uint32_t BEndBLine;
|
|
uint32_t HSyncLength;
|
|
uint32_t VSyncLength0;
|
|
} vou_output_t;
|
|
|
|
|
|
|
|
/*
|
|
vou sync info configration
|
|
*/
|
|
static vou_output_t vou_out = {
|
|
#if (LOGO_VO_HDMI == LOGO_VO_1024x768)
|
|
.Clock = 0x2384,// 65MHz
|
|
.Hactvie = 1024,
|
|
.Vactive = 768,
|
|
.FrameRate = 60,
|
|
.Hfront = 24,
|
|
.Hback = 160,
|
|
.Hsync = 136,
|
|
.Hpol = 0,
|
|
.Vfront = 3,
|
|
.Vback = 29,
|
|
.Vsync = 6,
|
|
.Vpol = 0,
|
|
#elif (LOGO_VO_HDMI == LOGO_VO_1920x1080)
|
|
.Clock = 0x03A9,// 148.5MHz
|
|
.Hactvie = 1920,
|
|
.Vactive = 1080,
|
|
.FrameRate = 60,
|
|
.Hfront = 88,
|
|
.Hback = 44,
|
|
.Hsync = 148,
|
|
.Hpol = 1,
|
|
.Vfront = 4,
|
|
.Vback = 36,
|
|
.Vsync = 5,
|
|
.Vpol = 1,
|
|
#elif (LOGO_VO_MIPI == LOGO_VO_ILI9881)
|
|
.Clock = 0,
|
|
.Hactvie = 800,
|
|
.Vactive = 1280,
|
|
.FrameRate = 60,
|
|
.Hfront = 60,
|
|
.Hback = 30,
|
|
.Hsync = 30,
|
|
.Hpol = 1,
|
|
.Vfront = 16,
|
|
.Vback = 14,
|
|
.Vsync = 2,
|
|
.Vpol = 1,
|
|
#elif (LOGO_VO_MIPI == LOGO_VO_EK79007)
|
|
.Clock = 0,
|
|
.Hactvie = 1024,
|
|
.Vactive = 600,
|
|
.FrameRate = 60,
|
|
.Hfront = 160,
|
|
.Hback = 120,
|
|
.Hsync = 40,
|
|
.Hpol = 1,
|
|
.Vfront = 12,
|
|
.Vback = 18,
|
|
.Vsync = 5,
|
|
.Vpol = 1,
|
|
#endif
|
|
};
|
|
|
|
|
|
|
|
static unsigned char * logo_i_addr = NULL;
|
|
static unsigned char * logo_o_addr = NULL;
|
|
static int logo_w = 0;
|
|
static int logo_h = 0;
|
|
|
|
static uint32_t readl(uint32_t addr)
|
|
{
|
|
uint32_t value = *(volatile uint32_t*)addr;
|
|
return value;
|
|
}
|
|
|
|
static void writel(uint32_t value, uint32_t addr)
|
|
{
|
|
*(volatile uint32_t*)addr = value;
|
|
}
|
|
|
|
static void writels(uint32_t value, uint32_t addr)
|
|
{
|
|
uint32_t tmp = readl(addr);
|
|
tmp |= value;
|
|
writel(tmp, addr);
|
|
}
|
|
|
|
static void writelc(uint32_t value, uint32_t addr)
|
|
{
|
|
uint32_t tmp = readl(addr);
|
|
tmp &= (~value);
|
|
writel(tmp, addr);
|
|
}
|
|
|
|
static void writelr(uint32_t value, uint32_t addr, uint32_t start, uint32_t bit)
|
|
{
|
|
uint32_t region = (0xFFFFFFFFU << ( start + bit )) | (0xFFFFFFFFULL >> ( 32 - start ));
|
|
uint32_t tmp = readl(addr);
|
|
tmp &= region;
|
|
tmp |= (~region) & (value << start);
|
|
writel(tmp, addr);
|
|
}
|
|
|
|
#if (LOGO_VO_MIPI == LOGO_VO_NONE)
|
|
static uint8_t readb(uint32_t addr)
|
|
{
|
|
uint8_t value = *(volatile uint8_t*)addr;
|
|
return value;
|
|
}
|
|
|
|
static void writeb(uint8_t value, uint32_t addr)
|
|
{
|
|
*(volatile uint8_t*)addr = value;
|
|
}
|
|
|
|
static void writebs(uint8_t value, uint32_t addr)
|
|
{
|
|
uint8_t tmp = readb(addr);
|
|
tmp |= value;
|
|
writeb(tmp, addr);
|
|
}
|
|
|
|
static void writebc(uint8_t value, uint32_t addr)
|
|
{
|
|
uint8_t tmp = readb(addr);
|
|
tmp &= (~value);
|
|
writeb(tmp, addr);
|
|
}
|
|
#else
|
|
void writelr_delay(uint32_t value, uint32_t addr, uint32_t start, uint32_t bit)
|
|
{
|
|
uint32_t region = (0xFFFFFFFFU << ( start + bit )) | (0xFFFFFFFFULL >> ( 32 - start ));
|
|
uint32_t tmp = readl(addr);
|
|
tmp &= region;
|
|
tmp |= (~region) & (value << start);
|
|
writel(tmp, addr);
|
|
mdelay(1);
|
|
}
|
|
#endif
|
|
|
|
|
|
void fast_osd_init(void)
|
|
{
|
|
int Hactvie = vou_out.Hactvie;
|
|
int Vactive = vou_out.Vactive;
|
|
int FrameRate = vou_out.FrameRate;
|
|
int Hfront = vou_out.Hfront;
|
|
int Hsync = vou_out.Hsync;
|
|
int Hback = vou_out.Hback;
|
|
int Vfront = vou_out.Vfront;
|
|
int Vsync = vou_out.Vsync;
|
|
int Vback = vou_out.Vback;
|
|
|
|
vou_out.Hblank = Hfront + Hsync + Hback;
|
|
vou_out.Vblank = Vfront + Vsync + Vback;
|
|
vou_out.Htotal = Hactvie + vou_out.Hblank;
|
|
vou_out.Vtotal = Vactive + vou_out.Vblank;
|
|
vou_out.PixelRate = FrameRate * vou_out.Htotal * vou_out.Vtotal;
|
|
vou_out.Alen = Hactvie;
|
|
vou_out.Aline = Vactive;
|
|
vou_out.Hlen = vou_out.Htotal - 1;
|
|
vou_out.StartBlen = Hsync + Hback - 1;
|
|
vou_out.EndBlen = Hfront;
|
|
vou_out.TVLine = vou_out.Vtotal - 1;
|
|
vou_out.TBLineOfs = Vsync + Vback - 1;
|
|
vou_out.TEndBLine = Vfront;
|
|
vou_out.BVLine = 0;
|
|
vou_out.BBLineOfs = 0;
|
|
vou_out.BEndBLine = 0;
|
|
vou_out.HSyncLength = Hsync -1;
|
|
vou_out.VSyncLength0 = Vsync - 1;
|
|
|
|
#if (LOGO_VO_HDMI != LOGO_VO_NONE)
|
|
writels(0x00003f1f, 0x34000000);
|
|
writelc(0x00000400, 0x34000078);
|
|
writels(0x00000003, 0x28100230);
|
|
writel(0x00000300, 0x34100010);
|
|
writels(0x0000007f, 0x34000014);
|
|
writelc(0x0000007f, 0x34000014);
|
|
writel(0x00cc0000, 0x34100010);
|
|
writel(0x0000000f, 0x34100004);
|
|
writelc(0x00004000, 0x3400007c);
|
|
writel(0x00000000, 0x28000068);
|
|
writel(0x00000000, 0x34100040);
|
|
|
|
writel(0x00000008, 0x34100020);
|
|
writel(0x0000000a, 0x34100024);
|
|
writel(0x00000300, 0x34100028);
|
|
writel(0x00000600, 0x3410002c);
|
|
writel(0x00000007, 0x34100030);
|
|
writel(0x0000000a, 0x34100034);
|
|
writel(0x00000080, 0x34100038);
|
|
writel(0x00000100, 0x3410003c);
|
|
#endif
|
|
}
|
|
|
|
#if (LOGO_VO_MIPI != LOGO_VO_NONE)
|
|
static uint32_t mipi_dphy_hal_get_pixel_clk_div(void)
|
|
{
|
|
/*
|
|
pll---->div--->vou
|
|
\___1/8--_>mipi_ctrl
|
|
*/
|
|
uint32_t val = 0;
|
|
uint32_t i = 0;
|
|
uint32_t clkDiv = 0;
|
|
uint32_t clk_div_tab[16][2] =
|
|
{ /*val , div*/
|
|
{0, 2},
|
|
{1, 3},
|
|
{2, 4},
|
|
{3, 5},
|
|
{4, 6},
|
|
{5, 7},
|
|
{6, 8},
|
|
{7, 9},
|
|
{8, 10},
|
|
{9, 11},
|
|
{10, 12},
|
|
{11, 13},
|
|
{12, 14},
|
|
{13, 15},
|
|
{14, 16},
|
|
{15, 1}
|
|
};
|
|
|
|
val = readl(0x3450005c);
|
|
val &= 0x0f;
|
|
|
|
for (i = 0; i < 16; i++)
|
|
{
|
|
if (val == clk_div_tab[i][0]) {
|
|
clkDiv = clk_div_tab[i][1];
|
|
break;
|
|
}
|
|
}
|
|
|
|
return clkDiv;
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
* int x : logo display position x
|
|
* int y : logo display position x
|
|
* int w : logo display width
|
|
* int h : logo display height
|
|
* uint32_t addr : logo source address
|
|
* int pw : logo source picture width
|
|
* int pp : logo source picture pitch
|
|
* int ph : logo source picture height
|
|
*
|
|
* for example:
|
|
* 1. full screen osd:
|
|
* fast_osd(0, 0, 1024, 600, 0x40000000, 1024, 1024, 600);
|
|
* 2. full screen osd with smaller picture(yuv only):
|
|
* fast_osd(0, 0, 256, 150, 0x40000000, 1024, 1024, 600);
|
|
* 3. topleft 1/16 display area osd with same-sized picture
|
|
* fast_osd(0, 0, 256, 150, 0x40000000, 256, 150, 256);
|
|
*/
|
|
|
|
void fast_osd_hdmi(int type, int x, int y, int w, int h, uint32_t addr, int pw, int pp, int ph)
|
|
{
|
|
#if (LOGO_VO_HDMI == LOGO_VO_1024x768 || LOGO_VO_HDMI == LOGO_VO_1920x1080)
|
|
writebs(0x0b, 0x34204002);
|
|
writebc(0x0000000b, 0x34204002);
|
|
|
|
writelr(0x00040000|vou_out.Clock, 0x2800006c, 0, 20);//writelr(0x00042384, 0x2800006c, 0, 20);
|
|
writelr(vou_out.Clock, 0x2800006c, 0, 20);//writelr(0x00002384, 0x2800006c, 0, 20);
|
|
|
|
writeb(0x10, 0x34201000);
|
|
writeb(0x00, 0x34201001);
|
|
writeb(0x04, 0x34201002);
|
|
writeb(0x40, 0x34201003);
|
|
writeb(0x01, 0x34201004);
|
|
writeb(0x00, 0x34201005);
|
|
writeb(0x03, 0x34201006);
|
|
writeb(0x26, 0x34201007);
|
|
writeb(0x18, 0x34201008);
|
|
writeb(0x00, 0x34201009);
|
|
writeb(0x88, 0x3420100a);
|
|
writeb(0x00, 0x3420100b);
|
|
writeb(0x03, 0x3420100c);
|
|
writeb(0x06, 0x3420100d);
|
|
writeb(0x0c, 0x34201011);
|
|
writeb(0x20, 0x34201012);
|
|
writeb(0x21, 0x34201013);
|
|
writeb(0xff, 0x34201014);
|
|
writeb(0x15, 0x34201015);
|
|
writeb(0x00, 0x34201016);
|
|
writeb(0x01, 0x34204005);
|
|
writeb(0x00, 0x34204005);
|
|
writel(0x000c000c, 0x28500078);
|
|
writel(0x000c000c, 0x2850007c);
|
|
writel(0x03d403d4, 0x2850004c);
|
|
writel(0xa39003d4, 0x28500050);
|
|
|
|
writel(0x00000000, 0x34101600);
|
|
writel(0x0001fe00, 0x34101604);
|
|
writel(0x00000001, 0x34101608);
|
|
writel(0x00000000, 0x3410160c);
|
|
writel(0x000007ff, 0x34101610);
|
|
writel(0x0001fff4, 0x34101614);
|
|
writel(0x0003f80e, 0x34101618);
|
|
writel(0x00000001, 0x3410161c);
|
|
writel(0x00000fff, 0x34101620);
|
|
writel(0x0001f3e9, 0x34101624);
|
|
writel(0x0003ee1f, 0x34101628);
|
|
writel(0x00000002, 0x3410162c);
|
|
writel(0x000013fe, 0x34101630);
|
|
writel(0x0001e3e1, 0x34101634);
|
|
writel(0x0003e233, 0x34101638);
|
|
writel(0x0003fe04, 0x3410163c);
|
|
writel(0x000017fe, 0x34101640);
|
|
writel(0x0001c9dc, 0x34101644);
|
|
writel(0x0003d847, 0x34101648);
|
|
writel(0x0003fe05, 0x3410164c);
|
|
writel(0x000019fe, 0x34101650);
|
|
writel(0x0001add8, 0x34101654);
|
|
writel(0x0003cc5c, 0x34101658);
|
|
writel(0x0003fe07, 0x3410165c);
|
|
writel(0x000019fd, 0x34101660);
|
|
writel(0x00018dd7, 0x34101664);
|
|
writel(0x0003c272, 0x34101668);
|
|
writel(0x0003fc09, 0x3410166c);
|
|
writel(0x000019fe, 0x34101670);
|
|
writel(0x000165d7, 0x34101674);
|
|
writel(0x0003ba88, 0x34101678);
|
|
writel(0x0003fc0a, 0x3410167c);
|
|
writel(0x000017fe, 0x34101680);
|
|
writel(0x00013dd9, 0x34101684);
|
|
writel(0x0003b29e, 0x34101688);
|
|
writel(0x0003fc0b, 0x3410168c);
|
|
writel(0x000015fe, 0x34101690);
|
|
writel(0x000111dd, 0x34101694);
|
|
writel(0x0003aeb2, 0x34101698);
|
|
writel(0x0003fc0c, 0x3410169c);
|
|
writel(0x000013fe, 0x341016a0);
|
|
writel(0x0000e7e1, 0x341016a4);
|
|
writel(0x0003aec5, 0x341016a8);
|
|
writel(0x0003fa0c, 0x341016ac);
|
|
writel(0x00000fff, 0x341016b0);
|
|
writel(0x0000b9e6, 0x341016b4);
|
|
writel(0x0003b0d6, 0x341016b8);
|
|
writel(0x0003fc0c, 0x341016bc);
|
|
writel(0x00000bff, 0x341016c0);
|
|
writel(0x00008dec, 0x341016c4);
|
|
writel(0x0003b8e5, 0x341016c8);
|
|
writel(0x0003fc0b, 0x341016cc);
|
|
writel(0x000009ff, 0x341016d0);
|
|
writel(0x000067f1, 0x341016d4);
|
|
writel(0x0003c2f1, 0x341016d8);
|
|
writel(0x0003fc09, 0x341016dc);
|
|
writel(0x00000400, 0x341016e0);
|
|
writel(0x00003ff7, 0x341016e4);
|
|
writel(0x0003d2f9, 0x341016e8);
|
|
writel(0x0003fe07, 0x341016ec);
|
|
writel(0x00000200, 0x341016f0);
|
|
writel(0x00001ffc, 0x341016f4);
|
|
writel(0x0003e8fe, 0x341016f8);
|
|
writel(0x0003fe03, 0x341016fc);
|
|
writel(0x0001fe00, 0x34101700);
|
|
writel(0x00000001, 0x34101704);
|
|
writel(0x0001fdf9, 0x34101708);
|
|
writel(0x00000009, 0x3410170c);
|
|
writel(0x0001eff4, 0x34101710);
|
|
writel(0x0003fe16, 0x34101714);
|
|
writel(0x0001d9f1, 0x34101718);
|
|
writel(0x0003fc25, 0x3410171c);
|
|
writel(0x0001bbf0, 0x34101720);
|
|
writel(0x0003fa36, 0x34101724);
|
|
writel(0x000197f0, 0x34101728);
|
|
writel(0x0003f64a, 0x3410172c);
|
|
writel(0x00016ff1, 0x34101730);
|
|
writel(0x0003f25f, 0x34101734);
|
|
writel(0x000143f3, 0x34101738);
|
|
writel(0x0003ee75, 0x3410173c);
|
|
writel(0x000117f5, 0x34101740);
|
|
writel(0x0003ea8b, 0x34101744);
|
|
writel(0x0000ebf7, 0x34101748);
|
|
writel(0x0003e6a1, 0x3410174c);
|
|
writel(0x0000bff9, 0x34101750);
|
|
writel(0x0003e2b7, 0x34101754);
|
|
writel(0x000095fb, 0x34101758);
|
|
writel(0x0003e0cb, 0x3410175c);
|
|
writel(0x00006dfd, 0x34101760);
|
|
writel(0x0003e0dd, 0x34101764);
|
|
writel(0x00004bfe, 0x34101768);
|
|
writel(0x0003e2ec, 0x3410176c);
|
|
writel(0x00002dff, 0x34101770);
|
|
writel(0x0003e8f7, 0x34101774);
|
|
writel(0x00001200, 0x34101778);
|
|
writel(0x0003f2fe, 0x3410177c);
|
|
writel(0x0001fe00, 0x34101800);
|
|
writel(0x00000001, 0x34101804);
|
|
writel(0x0001fdf9, 0x34101808);
|
|
writel(0x00000009, 0x3410180c);
|
|
writel(0x0001eff4, 0x34101810);
|
|
writel(0x0003fe16, 0x34101814);
|
|
writel(0x0001d9f1, 0x34101818);
|
|
writel(0x0003fc25, 0x3410181c);
|
|
writel(0x0001bbf0, 0x34101820);
|
|
writel(0x0003fa36, 0x34101824);
|
|
writel(0x000197f0, 0x34101828);
|
|
writel(0x0003f64a, 0x3410182c);
|
|
writel(0x00016ff1, 0x34101830);
|
|
writel(0x0003f25f, 0x34101834);
|
|
writel(0x000143f3, 0x34101838);
|
|
writel(0x0003ee75, 0x3410183c);
|
|
writel(0x000117f5, 0x34101840);
|
|
writel(0x0003ea8b, 0x34101844);
|
|
writel(0x0000ebf7, 0x34101848);
|
|
writel(0x0003e6a1, 0x3410184c);
|
|
writel(0x0000bff9, 0x34101850);
|
|
writel(0x0003e2b7, 0x34101854);
|
|
writel(0x000095fb, 0x34101858);
|
|
writel(0x0003e0cb, 0x3410185c);
|
|
writel(0x00006dfd, 0x34101860);
|
|
writel(0x0003e0dd, 0x34101864);
|
|
writel(0x00004bfe, 0x34101868);
|
|
writel(0x0003e2ec, 0x3410186c);
|
|
writel(0x00002dff, 0x34101870);
|
|
writel(0x0003e8f7, 0x34101874);
|
|
writel(0x00001200, 0x34101878);
|
|
writel(0x0003f2fe, 0x3410187c);
|
|
writel(0x00003404, 0x34101a00);
|
|
writel(0x00009a3b, 0x34101a04);
|
|
writel(0x0000343c, 0x34101a08);
|
|
writel(0x00000004, 0x34101a0c);
|
|
writel(0x00003004, 0x34101a10);
|
|
writel(0x00009a39, 0x34101a14);
|
|
writel(0x0000383d, 0x34101a18);
|
|
writel(0x00000005, 0x34101a1c);
|
|
writel(0x00002c03, 0x34101a20);
|
|
writel(0x00009838, 0x34101a24);
|
|
writel(0x00003c3f, 0x34101a28);
|
|
writel(0x00000006, 0x34101a2c);
|
|
writel(0x00002803, 0x34101a30);
|
|
writel(0x00009a35, 0x34101a34);
|
|
writel(0x00003e41, 0x34101a38);
|
|
writel(0x00000007, 0x34101a3c);
|
|
writel(0x00002402, 0x34101a40);
|
|
writel(0x00009634, 0x34101a44);
|
|
writel(0x00004642, 0x34101a48);
|
|
writel(0x00000008, 0x34101a4c);
|
|
writel(0x00002202, 0x34101a50);
|
|
writel(0x00009431, 0x34101a54);
|
|
writel(0x00004a44, 0x34101a58);
|
|
writel(0x00000009, 0x34101a5c);
|
|
writel(0x00001e01, 0x34101a60);
|
|
writel(0x0000962f, 0x34101a64);
|
|
writel(0x00004e45, 0x34101a68);
|
|
writel(0x0000000a, 0x34101a6c);
|
|
writel(0x00001c01, 0x34101a70);
|
|
writel(0x0000922d, 0x34101a74);
|
|
writel(0x00005247, 0x34101a78);
|
|
writel(0x0000000b, 0x34101a7c);
|
|
writel(0x00001801, 0x34101a80);
|
|
writel(0x0000902b, 0x34101a84);
|
|
writel(0x00005648, 0x34101a88);
|
|
writel(0x0000020c, 0x34101a8c);
|
|
writel(0x00001600, 0x34101a90);
|
|
writel(0x00008e29, 0x34101a94);
|
|
writel(0x00005a49, 0x34101a98);
|
|
writel(0x0000020e, 0x34101a9c);
|
|
writel(0x00001400, 0x34101aa0);
|
|
writel(0x00008c27, 0x34101aa4);
|
|
writel(0x00005e4a, 0x34101aa8);
|
|
writel(0x0000020f, 0x34101aac);
|
|
writel(0x00001200, 0x34101ab0);
|
|
writel(0x00008825, 0x34101ab4);
|
|
writel(0x0000624a, 0x34101ab8);
|
|
writel(0x00000411, 0x34101abc);
|
|
writel(0x00001000, 0x34101ac0);
|
|
writel(0x00008423, 0x34101ac4);
|
|
writel(0x0000684b, 0x34101ac8);
|
|
writel(0x00000412, 0x34101acc);
|
|
writel(0x00000e00, 0x34101ad0);
|
|
writel(0x0000841f, 0x34101ad4);
|
|
writel(0x00006a4c, 0x34101ad8);
|
|
writel(0x00000614, 0x34101adc);
|
|
writel(0x00000c00, 0x34101ae0);
|
|
writel(0x00007e1e, 0x34101ae4);
|
|
writel(0x0000704c, 0x34101ae8);
|
|
writel(0x00000616, 0x34101aec);
|
|
writel(0x00000a00, 0x34101af0);
|
|
writel(0x00007c1c, 0x34101af4);
|
|
writel(0x0000724c, 0x34101af8);
|
|
writel(0x00000818, 0x34101afc);
|
|
writel(0x0000fe3d, 0x34101b00);
|
|
writel(0x00000c3e, 0x34101b04);
|
|
writel(0x0000fe37, 0x34101b08);
|
|
writel(0x00000c44, 0x34101b0c);
|
|
writel(0x0000fc31, 0x34101b10);
|
|
writel(0x00000e4a, 0x34101b14);
|
|
writel(0x0000f82c, 0x34101b18);
|
|
writel(0x00001050, 0x34101b1c);
|
|
writel(0x0000f426, 0x34101b20);
|
|
writel(0x00001456, 0x34101b24);
|
|
writel(0x0000ee22, 0x34101b28);
|
|
writel(0x0000185b, 0x34101b2c);
|
|
writel(0x0000e81d, 0x34101b30);
|
|
writel(0x00001c61, 0x34101b34);
|
|
writel(0x0000e019, 0x34101b38);
|
|
writel(0x00002266, 0x34101b3c);
|
|
writel(0x0000d615, 0x34101b40);
|
|
writel(0x00002a6b, 0x34101b44);
|
|
writel(0x0000cc11, 0x34101b48);
|
|
writel(0x00003270, 0x34101b4c);
|
|
writel(0x0000c20e, 0x34101b50);
|
|
writel(0x00003a74, 0x34101b54);
|
|
writel(0x0000b80c, 0x34101b58);
|
|
writel(0x00004476, 0x34101b5c);
|
|
writel(0x0000ac0a, 0x34101b60);
|
|
writel(0x00004c7a, 0x34101b64);
|
|
writel(0x0000a008, 0x34101b68);
|
|
writel(0x0000587c, 0x34101b6c);
|
|
writel(0x00009407, 0x34101b70);
|
|
writel(0x0000627e, 0x34101b74);
|
|
writel(0x00008806, 0x34101b78);
|
|
writel(0x00006e7f, 0x34101b7c);
|
|
writel(0x0000fe3d, 0x34101c00);
|
|
writel(0x00000c3e, 0x34101c04);
|
|
writel(0x0000fe37, 0x34101c08);
|
|
writel(0x00000c44, 0x34101c0c);
|
|
writel(0x0000fc31, 0x34101c10);
|
|
writel(0x00000e4a, 0x34101c14);
|
|
writel(0x0000f82c, 0x34101c18);
|
|
writel(0x00001050, 0x34101c1c);
|
|
writel(0x0000f426, 0x34101c20);
|
|
writel(0x00001456, 0x34101c24);
|
|
writel(0x0000ee22, 0x34101c28);
|
|
writel(0x0000185b, 0x34101c2c);
|
|
writel(0x0000e81d, 0x34101c30);
|
|
writel(0x00001c61, 0x34101c34);
|
|
writel(0x0000e019, 0x34101c38);
|
|
writel(0x00002266, 0x34101c3c);
|
|
writel(0x0000d615, 0x34101c40);
|
|
writel(0x00002a6b, 0x34101c44);
|
|
writel(0x0000cc11, 0x34101c48);
|
|
writel(0x00003270, 0x34101c4c);
|
|
writel(0x0000c20e, 0x34101c50);
|
|
writel(0x00003a74, 0x34101c54);
|
|
writel(0x0000b80c, 0x34101c58);
|
|
writel(0x00004476, 0x34101c5c);
|
|
writel(0x0000ac0a, 0x34101c60);
|
|
writel(0x00004c7a, 0x34101c64);
|
|
writel(0x0000a008, 0x34101c68);
|
|
writel(0x0000587c, 0x34101c6c);
|
|
writel(0x00009407, 0x34101c70);
|
|
writel(0x0000627e, 0x34101c74);
|
|
writel(0x00008806, 0x34101c78);
|
|
writel(0x00006e7f, 0x34101c7c);
|
|
|
|
writel(0x00000087, 0x34101f14);
|
|
writel(0x00000005, 0x34101f18);
|
|
writel(0x00000000, 0x34101f1c);
|
|
writel(0x00089000, 0x34101f00);
|
|
writel(0x200c48ee, 0x34101f04);
|
|
writel(0x00000000, 0x34101f08);
|
|
writel(0x02000080, 0x34101f0c);
|
|
writel(0x00000001, 0x34101f4c);
|
|
|
|
writel((vou_out.Vactive << 16) + vou_out.Hactvie, 0x34101024);//writel(0x03000400, 0x34101024);
|
|
writel((vou_out.StartBlen << 16) + vou_out.Hlen, 0x34101028);//writel(0x0127053f, 0x34101028);
|
|
writel((vou_out.TBLineOfs << 16) + vou_out.TVLine, 0x3410102C);//writel(0x00220325, 0x3410102C);
|
|
writel((vou_out.BBLineOfs << 16) + vou_out.BVLine, 0x34101030);//writel(0x00000000, 0x34101030);
|
|
|
|
writel(0xff00ff00, 0x34101034);
|
|
|
|
writel(0x356ebd01, 0x34101060);
|
|
writel(0x00069901, 0x34101064);
|
|
writel(0x14e00101, 0x34101068);
|
|
writel(0x33fc4861, 0x3410106c);
|
|
|
|
if (LOGO_YUV == type) {
|
|
writel(0x00000040, 0x34101200);
|
|
writel((ph<<16) + pw, 0x34101208);
|
|
writel(pp, 0x3410120c);
|
|
writel(addr, 0x34101210);
|
|
writel(addr + pp*ph, 0x34101214);
|
|
writel((y<<16) + x, 0x34101218);
|
|
writel(0x00000000, 0x34101230);
|
|
writel(0x00000000, 0x34101234);
|
|
writel((h<<16) + w, 0x3410121c);
|
|
writel(0x80800001, 0x34101004);
|
|
writel(0x00000009, 0x34101000);
|
|
} else {
|
|
// w & h are not used
|
|
if (LOGO_RGB_8888 == type) {
|
|
writel(0x00000002, 0x34101120); // mc abgr8888
|
|
//writel(0x0000001A, 0x34101120); //hik argb8888
|
|
} else if (LOGO_RGB_1555 == type) {
|
|
writel(0x00000010, 0x34101120); //mc argb1555
|
|
}
|
|
|
|
writel(0x00008000, 0x34101124);
|
|
writel(0x00000000, 0x34101128);
|
|
writel((ph<<16) + pw, 0x3410112c);
|
|
writel(pp, 0x34101130);
|
|
writel(addr, 0x34101134);
|
|
writel((y<<16) + x, 0x34101138);
|
|
writel(0x00000011, 0x34101000);
|
|
}
|
|
|
|
writel(0x00000006, 0x341010b0);
|
|
writel(0x00000000, 0x34101014);
|
|
writel(0x008080ff, 0x34101020);
|
|
writel(0x00ffffff, 0x3410103c);
|
|
writel(0x00000300, 0x3410100c);
|
|
writel(0x00000001, 0x3410100c);
|
|
writel(0xFFFFFFFF, 0x34101008);
|
|
#endif
|
|
}
|
|
|
|
void fast_osd_ili9881(int type, int x, int y, int w, int h, uint32_t addr, int pw, int pp, int ph)
|
|
{
|
|
#if (LOGO_VO_MIPI == LOGO_VO_ILI9881)
|
|
uint32_t clkdiv = 0;
|
|
|
|
/*pinmux*/
|
|
writel(0x00000002, 0x2820009c);
|
|
writel(0x00000002, 0x282000a0);
|
|
writel(0x00000002, 0x282000a4);
|
|
writel(0x00000002, 0x282000a8);
|
|
writel(0x00000002, 0x282000ac);
|
|
writel(0x00000002, 0x282000b0);
|
|
writel(0x00000002, 0x282000b4);
|
|
writel(0x00000002, 0x282000b8);
|
|
writel(0x00000002, 0x282000bc);
|
|
writel(0x00000002, 0x282000c0);
|
|
/*vou clock apb*/
|
|
writels(0x00003f1f, 0x34000000);
|
|
writelc(0x00000400, 0x34000078);
|
|
writels(0x00000003, 0x28100030);
|
|
writels(0x0000007f, 0x34000014);
|
|
writelc(0x0000007f, 0x34000014);
|
|
writel(0x0000000f, 0x34100004);
|
|
writels(0x00000300, 0x34000078);
|
|
|
|
writelr(0x00000000, 0x343000a0, 2, 1);
|
|
writelr(0x00000001, 0x343000b4, 0, 1);
|
|
writelr(0x00000001, 0x343000a0, 3, 1);
|
|
writelc(0x00002000, 0x34500064);
|
|
writelr(0x00000001, 0x343000b4, 1, 1);
|
|
writelr(0x00000000, 0x343000b8, 16, 1);
|
|
writelr(0x00000001, 0x343000a0, 0, 1);
|
|
writelr(0x00000001, 0x343000a0, 1, 1);
|
|
writelr(0x00000000, 0x343000b4, 0, 1);
|
|
writels(0x00002000, 0x34500064);
|
|
writelr(0x00000000, 0x34500064, 1, 7);
|
|
writelr(0x00000007, 0x34500064, 9, 4);
|
|
writelr(0x00000001, 0x34500064, 13, 1);
|
|
writelr(0x00080000, 0x34500060, 0, 32);
|
|
writelr(0x00000002, 0x34500068, 0, 4);
|
|
writelr(0x00000002, 0x34500068, 4, 4);
|
|
writelr(0x00000007, 0x34500068, 8, 3);
|
|
writelr(0x00000000, 0x34500068, 11, 3);
|
|
writelr(0x00000001, 0x3450007c, 0, 8);
|
|
writelr(0x00000007, 0x3450007c, 8, 8);
|
|
writelr(0x0000001f, 0x34500074, 0, 5);
|
|
writelr(0x00000003, 0x34500074, 5, 2);
|
|
writelr(0x00000000, 0x34500074, 7, 3);
|
|
writelr(0x0a0296b5, 0x3450005c, 0, 32);
|
|
writelr(0x000000b6, 0x34500058, 0, 32);
|
|
writelr(0x000001f4, 0x34500000, 0, 15);
|
|
writelr(0x00002710, 0x34500004, 0, 31);
|
|
|
|
writelr(0x00030e02, 0x34500008, 0, 32);//08
|
|
|
|
writelr(0x00120409, 0x3450000c, 0, 32);
|
|
writelr(0x00000100, 0x34500078, 0, 32);
|
|
writelr(0x000001f4, 0x34500010, 0, 32);
|
|
writelr(0x00002710, 0x34500014, 0, 32);
|
|
|
|
writelr(0x030e0609, 0x34500018, 0, 32);//18
|
|
|
|
writelr(0x00000100, 0x3450001c, 0, 32);
|
|
|
|
writelr(0x001c0a23, 0x34500020, 0, 32);//20
|
|
|
|
writelr(0x000001f4, 0x34500024, 0, 32);
|
|
writelr(0x00002710, 0x34500028, 0, 32);
|
|
|
|
writelr(0x030e0609, 0x3450002c, 0, 32);//2c
|
|
|
|
writelr(0x00000100, 0x34500030, 0, 32);
|
|
writelr(0x000001f4, 0x34500034, 0, 32);
|
|
writelr(0x00002710, 0x34500038, 0, 32);
|
|
|
|
writelr(0x030e0609, 0x3450003c, 0, 32);//3c
|
|
|
|
writelr(0x00000100, 0x34500040, 0, 32);
|
|
writelr(0x000001f4, 0x34500044, 0, 32);
|
|
writelr(0x00002710, 0x34500048, 0, 32);
|
|
|
|
writelr(0x030e0609, 0x3450004c, 0, 32);//4c
|
|
|
|
writelr(0x00000100, 0x34500050, 0, 32);
|
|
writelr(0x00000005, 0x34500054, 0, 8);
|
|
|
|
writelr(0x0000007f, 0x34500074, 0, 7);
|
|
writelr(0x00000000, 0x34500074, 7, 3);
|
|
|
|
writelr(0x00000001, 0x3450007c, 0, 8);
|
|
writelr(0x0000000a, 0x3450007c, 8, 8);
|
|
|
|
writelr(0x00000000, 0x3450006c, 0, 3);
|
|
writelr(0x00000001, 0x3450006c, 3, 1);
|
|
writelr(0x00000000, 0x3450006c, 4, 2);
|
|
writelr(0x00000000, 0x3450006c, 6, 1);
|
|
|
|
udelay(1000);
|
|
|
|
writelr(0x00000000, 0x34500064, 1, 7);
|
|
writelr(0x00000007, 0x34500064, 9, 4);//
|
|
writelr(0x00000001, 0x34500064, 13, 1);
|
|
|
|
writelr(0x00000000, 0x3430000c, 0, 2);
|
|
writelr(0x00000005, 0x34300010, 0, 4);
|
|
writelr(0x00000001, 0x34300014, 2, 1);
|
|
writelr(0x00000001, 0x34300014, 1, 1);
|
|
writelr(0x0000000c, 0x34300008, 0, 8);
|
|
writelr(0x00000001, 0x34300008, 8, 8);
|
|
writel(0xffffff01, 0x34300068);
|
|
writelr(0x00000001, 0x3430001c, 0, 2);
|
|
writelr(0x00000004, 0x34300020, 0, 4);
|
|
writelr(0x00000001, 0x34300020, 16, 2);
|
|
writelr(0x00000001, 0x34300024, 0, 1);
|
|
writelr(0x00000064, 0x34300028, 16, 16);
|
|
writelr(0x00000008, 0x34300028, 0, 16);
|
|
writelr(0x00000001, 0x3430002c, 2, 1);
|
|
writelr(0x00000001, 0x3430002c, 3, 1);
|
|
writelr(0x00000001, 0x3430002c, 4, 1);
|
|
writelr(0x00000000, 0x34300030, 0, 2);
|
|
writelr(0x00000001, 0x34300034, 0, 1);
|
|
writelr(0x00000002, 0x34300038, 0, 2);
|
|
writelr(0x00000000, 0x34300038, 8, 1);
|
|
writelr(0x00000001, 0x34300038, 9, 1);
|
|
writelr(0x00000000, 0x34300038, 10, 1);
|
|
writelr(0x00000000, 0x34300038, 11, 1);
|
|
writelr(0x00000000, 0x34300038, 12, 1);
|
|
writelr(0x00000000, 0x34300038, 13, 1);
|
|
writelr(vou_out.Hactvie , 0x3430003c, 0, 14);//writelr(0x00000320, 0x3430003c, 0, 14);
|
|
writelr(0x00000001, 0x34300040, 0, 13);
|
|
writelr(0x0000000a, 0x34300044, 0, 13);
|
|
|
|
clkdiv = mipi_dphy_hal_get_pixel_clk_div();
|
|
|
|
writelr((vou_out.Hsync * clkdiv / 8), 0x34300048, 0, 12);//writelr(0x00000009, 0x34300048, 0, 12);
|
|
writelr((vou_out.Hback * clkdiv / 8), 0x3430004c, 0, 12);//writelr(0x00000014, 0x3430004c, 0, 12);
|
|
writelr(((vou_out.Hsync + vou_out.Hback + vou_out.Hfront + vou_out.Hactvie) * clkdiv / 8), 0x34300050, 0, 15);//writelr(0x000003a5, 0x34300050, 0, 15);
|
|
writelr(vou_out.Vsync, 0x34300054, 0, 10);//writelr(0x00000004, 0x34300054, 0, 10);
|
|
writelr(vou_out.Vback, 0x34300058, 0, 10);//writelr(0x00000018, 0x34300058, 0, 10);
|
|
writelr(vou_out.Vfront, 0x3430005c, 0, 10);//writelr(0x00000014, 0x3430005c, 0, 10);
|
|
writelr(vou_out.Vactive, 0x34300060, 0, 14);//writelr(0x00000500, 0x34300060, 0, 14);
|
|
writelr(0x00000000, 0x34300018, 16, 8);
|
|
writelr(0x00000000, 0x34300018, 0, 8);
|
|
writelr(0x0000006e, 0x3430009c, 0, 15);
|
|
writelr(0x00000025, 0x3430009c, 16, 8);
|
|
writelr(0x00000000, 0x34300064, 0, 16);
|
|
writelr(0x00000001, 0x34300094, 0, 1);
|
|
writelr(0x00000000, 0x34300078, 0, 16);
|
|
writelr(0x00000000, 0x34300078, 16, 16);
|
|
writelr(0x00000000, 0x3430007c, 0, 16);
|
|
writelr(0x00000000, 0x34300080, 0, 16);
|
|
writelr(0x00000000, 0x34300084, 0, 16);
|
|
writelr(0x00000000, 0x34300088, 0, 16);
|
|
writelr(0x00000000, 0x3430008c, 0, 16);
|
|
writelr(0x00000087, 0x34300098, 0, 10);
|
|
writelr(0x00000025, 0x34300098, 16, 10);
|
|
writelr(0x00000000, 0x343000f4, 0, 15);
|
|
writelr(0x00000028, 0x343000a4, 8, 8);
|
|
writelr(0x00000003, 0x343000a4, 0, 2);
|
|
writelr(0x00000000, 0x343000a8, 0, 4);
|
|
writelr(0x00000000, 0x343000ac, 0, 4);
|
|
writelr(0x00000000, 0x34300100, 0, 1);
|
|
writelr(0x00000000, 0x34300100, 8, 1);
|
|
writelr(0x00000000, 0x34300100, 16, 1);
|
|
writel(0xffffffff, 0x343000c4);
|
|
writel(0xffffffff, 0x343000c8);
|
|
writelr(0x00000000, 0x34300004, 0, 1);
|
|
writelr(0x00000001, 0x34300004, 0, 1);
|
|
|
|
writels(0x00004000, 0x3400007c); //vou->mipi dsi
|
|
writel(0x000002ac, 0x340000a4);
|
|
|
|
//----------------select size 1280/800/1/60------------------------
|
|
writel(0x00000008, 0x34100020);
|
|
writel(0x0000000a, 0x34100024);
|
|
writel(0x00000300, 0x34100028);
|
|
writel(0x00000600, 0x3410002c);
|
|
writel(0x00000007, 0x34100030);
|
|
writel(0x0000000a, 0x34100034);
|
|
writel(0x00000080, 0x34100038);
|
|
writel(0x00000100, 0x3410003c);
|
|
writel(0x00000001, 0x34100040);
|
|
|
|
//vou:[0]kick off start device
|
|
writel(0x00000007, 0x34101f14);
|
|
writel(0x00000003, 0x34101f18);
|
|
writel(0x00000000, 0x34101f1c);
|
|
|
|
printf("start reset GPIO7-1\n");
|
|
|
|
writelr(0x00000001, 0x1b070008, 1, 1); // DIR: set GPIO7-1 output
|
|
writelr(0x00000001, 0x1b070004, 1, 1); // DMSK: enable GPIO7-1
|
|
|
|
writelr(0x00000001, 0x1b070000, 1, 1); // DATA: GPIO7-1 output 1;
|
|
mdelay(20);
|
|
writelr(0x00000001, 0x1b070000, 1, 0); // DATA: GPIO7-1 output 0;
|
|
mdelay(60);
|
|
writelr(0x00000001, 0x1b070000, 1, 1); // DATA: GPIO7-1 output 1;
|
|
mdelay(120);
|
|
|
|
/*---1280*800 register config-------------------------start*/
|
|
printf("start write panel register\n");
|
|
writel(0x038198ff, 0x34300070); //long
|
|
mdelay(1);
|
|
// writelr_delay(0x00000439, 0x3430006c, 0, 24); //bist
|
|
writelr_delay(0x00000429, 0x3430006c, 0, 24); //normal
|
|
|
|
writelr_delay(0x00000115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00530315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00080615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00000e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00260f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00261015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00001d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00401e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00c01f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00062015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00012115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00072215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00002315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x008a2415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x008a2515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00002615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00002715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00332815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00332915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00002a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00002b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00082c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00082d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000b2e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000b2f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00423215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000a3515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00083715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x003c3815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00004015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00004115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00004215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00084315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00004415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00015015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00235115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00455215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00675315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00895415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00ab5515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00015615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00235715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00455815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00675915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00895a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00ab5b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00cd5c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00ef5d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00005e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00015f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00016015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00066115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00066215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00066315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00066415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00006515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00006615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00176715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00026815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00166915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00166a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00026b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000d6c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000d6d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000c6e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000c6f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000f7015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000f7115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000e7215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000e7315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00027415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00017515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00017615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00067715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00067815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00067915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00067a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00007b15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00007c15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00177d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00027e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00167f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00168015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00028115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000d8215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000d8315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000c8415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000c8515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000f8615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000f8715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000e8815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000e8915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00028a15, 0x3430006c, 0, 24);
|
|
|
|
writel(0x048198ff, 0x34300070); //long
|
|
mdelay(1);
|
|
writelr_delay(0x00000429, 0x3430006c, 0, 24);
|
|
|
|
writelr_delay(0x002b6e15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00356f15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00a43a15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00173515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001a8d15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00ba8715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00d1b215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x000b8815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00013815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0007b515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00753115, 0x3430006c, 0, 24);
|
|
//writelr_delay(0x00012f15, 0x3430006c, 0, 24);//bist mode
|
|
|
|
writel(0x018198ff, 0x34300070); //long
|
|
mdelay(1);
|
|
writelr_delay(0x00000429, 0x3430006c, 0, 24);
|
|
|
|
writelr_delay(0x000a2215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00405315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00405515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00955015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00905115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00226015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00206215, 0x3430006c, 0, 24);
|
|
|
|
writelr_delay(0x0000a015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0022a115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0032a215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0015a315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001aa415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x002ca515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0020a615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0021a715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x009aa815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001ea915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x002aaa15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0080ab15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001aac15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0018ad15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x004cae15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0021af15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0029b015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x004db115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x005ab215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0023b315, 0x3430006c, 0, 24);
|
|
|
|
writelr_delay(0x0000c015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0022c115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0032c215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0016c315, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0019c415, 0x3430006c, 0, 24);
|
|
writelr_delay(0x002cc515, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0020c615, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0021c715, 0x3430006c, 0, 24);
|
|
writelr_delay(0x009ac815, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001dc915, 0x3430006c, 0, 24);
|
|
writelr_delay(0x002aca15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0081cb15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x001acc15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0018cd15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x004cce15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0022cf15, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0028d015, 0x3430006c, 0, 24);
|
|
writelr_delay(0x004dd115, 0x3430006c, 0, 24);
|
|
writelr_delay(0x005ad215, 0x3430006c, 0, 24);
|
|
writelr_delay(0x0023d315, 0x3430006c, 0, 24);
|
|
|
|
writel(0x008198ff, 0x34300070); //long
|
|
mdelay(1);
|
|
writelr_delay(0x00000429, 0x3430006c, 0, 24);
|
|
writelr_delay(0x00003515, 0x3430006c, 0, 24);
|
|
mdelay(20);
|
|
writelr(0x00001115, 0x3430006c, 0, 24);
|
|
mdelay(600);
|
|
writelr(0x00002915, 0x3430006c, 0, 24);
|
|
mdelay(40);
|
|
|
|
/*------1280*800 register config-------------------end*/
|
|
writel(0x00000000, 0x34300068);
|
|
writel(0x00000014, 0x3430002c);
|
|
writel(0x00000000, 0x34300034);
|
|
/*-------vou cfg dsi high speed end------------------*/
|
|
writel(0x00000000, 0x34101600);
|
|
writel(0x0001fe00, 0x34101604);
|
|
writel(0x00000001, 0x34101608);
|
|
writel(0x00000000, 0x3410160c);
|
|
writel(0x000007ff, 0x34101610);
|
|
writel(0x0001fff4, 0x34101614);
|
|
writel(0x0003f80e, 0x34101618);
|
|
writel(0x00000001, 0x3410161c);
|
|
writel(0x00000fff, 0x34101620);
|
|
writel(0x0001f3e9, 0x34101624);
|
|
writel(0x0003ee1f, 0x34101628);
|
|
writel(0x00000002, 0x3410162c);
|
|
writel(0x000013fe, 0x34101630);
|
|
writel(0x0001e3e1, 0x34101634);
|
|
writel(0x0003e233, 0x34101638);
|
|
writel(0x0003fe04, 0x3410163c);
|
|
writel(0x000017fe, 0x34101640);
|
|
writel(0x0001c9dc, 0x34101644);
|
|
writel(0x0003d847, 0x34101648);
|
|
writel(0x0003fe05, 0x3410164c);
|
|
writel(0x000019fe, 0x34101650);
|
|
writel(0x0001add8, 0x34101654);
|
|
writel(0x0003cc5c, 0x34101658);
|
|
writel(0x0003fe07, 0x3410165c);
|
|
writel(0x000019fd, 0x34101660);
|
|
writel(0x00018dd7, 0x34101664);
|
|
writel(0x0003c272, 0x34101668);
|
|
writel(0x0003fc09, 0x3410166c);
|
|
writel(0x000019fe, 0x34101670);
|
|
writel(0x000165d7, 0x34101674);
|
|
writel(0x0003ba88, 0x34101678);
|
|
writel(0x0003fc0a, 0x3410167c);
|
|
writel(0x000017fe, 0x34101680);
|
|
writel(0x00013dd9, 0x34101684);
|
|
writel(0x0003b29e, 0x34101688);
|
|
writel(0x0003fc0b, 0x3410168c);
|
|
writel(0x000015fe, 0x34101690);
|
|
writel(0x000111dd, 0x34101694);
|
|
writel(0x0003aeb2, 0x34101698);
|
|
writel(0x0003fc0c, 0x3410169c);
|
|
writel(0x000013fe, 0x341016a0);
|
|
writel(0x0000e7e1, 0x341016a4);
|
|
writel(0x0003aec5, 0x341016a8);
|
|
writel(0x0003fa0c, 0x341016ac);
|
|
writel(0x00000fff, 0x341016b0);
|
|
writel(0x0000b9e6, 0x341016b4);
|
|
writel(0x0003b0d6, 0x341016b8);
|
|
writel(0x0003fc0c, 0x341016bc);
|
|
writel(0x00000bff, 0x341016c0);
|
|
writel(0x00008dec, 0x341016c4);
|
|
writel(0x0003b8e5, 0x341016c8);
|
|
writel(0x0003fc0b, 0x341016cc);
|
|
writel(0x000009ff, 0x341016d0);
|
|
writel(0x000067f1, 0x341016d4);
|
|
writel(0x0003c2f1, 0x341016d8);
|
|
writel(0x0003fc09, 0x341016dc);
|
|
writel(0x00000400, 0x341016e0);
|
|
writel(0x00003ff7, 0x341016e4);
|
|
writel(0x0003d2f9, 0x341016e8);
|
|
writel(0x0003fe07, 0x341016ec);
|
|
writel(0x00000200, 0x341016f0);
|
|
writel(0x00001ffc, 0x341016f4);
|
|
writel(0x0003e8fe, 0x341016f8);
|
|
writel(0x0003fe03, 0x341016fc);
|
|
writel(0x0001fe00, 0x34101700);
|
|
writel(0x00000001, 0x34101704);
|
|
writel(0x0001fdf9, 0x34101708);
|
|
writel(0x00000009, 0x3410170c);
|
|
writel(0x0001eff4, 0x34101710);
|
|
writel(0x0003fe16, 0x34101714);
|
|
writel(0x0001d9f1, 0x34101718);
|
|
writel(0x0003fc25, 0x3410171c);
|
|
writel(0x0001bbf0, 0x34101720);
|
|
writel(0x0003fa36, 0x34101724);
|
|
writel(0x000197f0, 0x34101728);
|
|
writel(0x0003f64a, 0x3410172c);
|
|
writel(0x00016ff1, 0x34101730);
|
|
writel(0x0003f25f, 0x34101734);
|
|
writel(0x000143f3, 0x34101738);
|
|
writel(0x0003ee75, 0x3410173c);
|
|
writel(0x000117f5, 0x34101740);
|
|
writel(0x0003ea8b, 0x34101744);
|
|
writel(0x0000ebf7, 0x34101748);
|
|
writel(0x0003e6a1, 0x3410174c);
|
|
writel(0x0000bff9, 0x34101750);
|
|
writel(0x0003e2b7, 0x34101754);
|
|
writel(0x000095fb, 0x34101758);
|
|
writel(0x0003e0cb, 0x3410175c);
|
|
writel(0x00006dfd, 0x34101760);
|
|
writel(0x0003e0dd, 0x34101764);
|
|
writel(0x00004bfe, 0x34101768);
|
|
writel(0x0003e2ec, 0x3410176c);
|
|
writel(0x00002dff, 0x34101770);
|
|
writel(0x0003e8f7, 0x34101774);
|
|
writel(0x00001200, 0x34101778);
|
|
writel(0x0003f2fe, 0x3410177c);
|
|
writel(0x0001fe00, 0x34101800);
|
|
writel(0x00000001, 0x34101804);
|
|
writel(0x0001fdf9, 0x34101808);
|
|
writel(0x00000009, 0x3410180c);
|
|
writel(0x0001eff4, 0x34101810);
|
|
writel(0x0003fe16, 0x34101814);
|
|
writel(0x0001d9f1, 0x34101818);
|
|
writel(0x0003fc25, 0x3410181c);
|
|
writel(0x0001bbf0, 0x34101820);
|
|
writel(0x0003fa36, 0x34101824);
|
|
writel(0x000197f0, 0x34101828);
|
|
writel(0x0003f64a, 0x3410182c);
|
|
writel(0x00016ff1, 0x34101830);
|
|
writel(0x0003f25f, 0x34101834);
|
|
writel(0x000143f3, 0x34101838);
|
|
writel(0x0003ee75, 0x3410183c);
|
|
writel(0x000117f5, 0x34101840);
|
|
writel(0x0003ea8b, 0x34101844);
|
|
writel(0x0000ebf7, 0x34101848);
|
|
writel(0x0003e6a1, 0x3410184c);
|
|
writel(0x0000bff9, 0x34101850);
|
|
writel(0x0003e2b7, 0x34101854);
|
|
writel(0x000095fb, 0x34101858);
|
|
writel(0x0003e0cb, 0x3410185c);
|
|
writel(0x00006dfd, 0x34101860);
|
|
writel(0x0003e0dd, 0x34101864);
|
|
writel(0x00004bfe, 0x34101868);
|
|
writel(0x0003e2ec, 0x3410186c);
|
|
writel(0x00002dff, 0x34101870);
|
|
writel(0x0003e8f7, 0x34101874);
|
|
writel(0x00001200, 0x34101878);
|
|
writel(0x0003f2fe, 0x3410187c);
|
|
writel(0x00003404, 0x34101a00);
|
|
writel(0x00009a3b, 0x34101a04);
|
|
writel(0x0000343c, 0x34101a08);
|
|
writel(0x00000004, 0x34101a0c);
|
|
writel(0x00003004, 0x34101a10);
|
|
writel(0x00009a39, 0x34101a14);
|
|
writel(0x0000383d, 0x34101a18);
|
|
writel(0x00000005, 0x34101a1c);
|
|
writel(0x00002c03, 0x34101a20);
|
|
writel(0x00009838, 0x34101a24);
|
|
writel(0x00003c3f, 0x34101a28);
|
|
writel(0x00000006, 0x34101a2c);
|
|
writel(0x00002803, 0x34101a30);
|
|
writel(0x00009a35, 0x34101a34);
|
|
writel(0x00003e41, 0x34101a38);
|
|
writel(0x00000007, 0x34101a3c);
|
|
writel(0x00002402, 0x34101a40);
|
|
writel(0x00009634, 0x34101a44);
|
|
writel(0x00004642, 0x34101a48);
|
|
writel(0x00000008, 0x34101a4c);
|
|
writel(0x00002202, 0x34101a50);
|
|
writel(0x00009431, 0x34101a54);
|
|
writel(0x00004a44, 0x34101a58);
|
|
writel(0x00000009, 0x34101a5c);
|
|
writel(0x00001e01, 0x34101a60);
|
|
writel(0x0000962f, 0x34101a64);
|
|
writel(0x00004e45, 0x34101a68);
|
|
writel(0x0000000a, 0x34101a6c);
|
|
writel(0x00001c01, 0x34101a70);
|
|
writel(0x0000922d, 0x34101a74);
|
|
writel(0x00005247, 0x34101a78);
|
|
writel(0x0000000b, 0x34101a7c);
|
|
writel(0x00001801, 0x34101a80);
|
|
writel(0x0000902b, 0x34101a84);
|
|
writel(0x00005648, 0x34101a88);
|
|
writel(0x0000020c, 0x34101a8c);
|
|
writel(0x00001600, 0x34101a90);
|
|
writel(0x00008e29, 0x34101a94);
|
|
writel(0x00005a49, 0x34101a98);
|
|
writel(0x0000020e, 0x34101a9c);
|
|
writel(0x00001400, 0x34101aa0);
|
|
writel(0x00008c27, 0x34101aa4);
|
|
writel(0x00005e4a, 0x34101aa8);
|
|
writel(0x0000020f, 0x34101aac);
|
|
writel(0x00001200, 0x34101ab0);
|
|
writel(0x00008825, 0x34101ab4);
|
|
writel(0x0000624a, 0x34101ab8);
|
|
writel(0x00000411, 0x34101abc);
|
|
writel(0x00001000, 0x34101ac0);
|
|
writel(0x00008423, 0x34101ac4);
|
|
writel(0x0000684b, 0x34101ac8);
|
|
writel(0x00000412, 0x34101acc);
|
|
writel(0x00000e00, 0x34101ad0);
|
|
writel(0x0000841f, 0x34101ad4);
|
|
writel(0x00006a4c, 0x34101ad8);
|
|
writel(0x00000614, 0x34101adc);
|
|
writel(0x00000c00, 0x34101ae0);
|
|
writel(0x00007e1e, 0x34101ae4);
|
|
writel(0x0000704c, 0x34101ae8);
|
|
writel(0x00000616, 0x34101aec);
|
|
writel(0x00000a00, 0x34101af0);
|
|
writel(0x00007c1c, 0x34101af4);
|
|
writel(0x0000724c, 0x34101af8);
|
|
writel(0x00000818, 0x34101afc);
|
|
writel(0x0000fe3d, 0x34101b00);
|
|
writel(0x00000c3e, 0x34101b04);
|
|
writel(0x0000fe37, 0x34101b08);
|
|
writel(0x00000c44, 0x34101b0c);
|
|
writel(0x0000fc31, 0x34101b10);
|
|
writel(0x00000e4a, 0x34101b14);
|
|
writel(0x0000f82c, 0x34101b18);
|
|
writel(0x00001050, 0x34101b1c);
|
|
writel(0x0000f426, 0x34101b20);
|
|
writel(0x00001456, 0x34101b24);
|
|
writel(0x0000ee22, 0x34101b28);
|
|
writel(0x0000185b, 0x34101b2c);
|
|
writel(0x0000e81d, 0x34101b30);
|
|
writel(0x00001c61, 0x34101b34);
|
|
writel(0x0000e019, 0x34101b38);
|
|
writel(0x00002266, 0x34101b3c);
|
|
writel(0x0000d615, 0x34101b40);
|
|
writel(0x00002a6b, 0x34101b44);
|
|
writel(0x0000cc11, 0x34101b48);
|
|
writel(0x00003270, 0x34101b4c);
|
|
writel(0x0000c20e, 0x34101b50);
|
|
writel(0x00003a74, 0x34101b54);
|
|
writel(0x0000b80c, 0x34101b58);
|
|
writel(0x00004476, 0x34101b5c);
|
|
writel(0x0000ac0a, 0x34101b60);
|
|
writel(0x00004c7a, 0x34101b64);
|
|
writel(0x0000a008, 0x34101b68);
|
|
writel(0x0000587c, 0x34101b6c);
|
|
writel(0x00009407, 0x34101b70);
|
|
writel(0x0000627e, 0x34101b74);
|
|
writel(0x00008806, 0x34101b78);
|
|
writel(0x00006e7f, 0x34101b7c);
|
|
writel(0x0000fe3d, 0x34101c00);
|
|
writel(0x00000c3e, 0x34101c04);
|
|
writel(0x0000fe37, 0x34101c08);
|
|
writel(0x00000c44, 0x34101c0c);
|
|
writel(0x0000fc31, 0x34101c10);
|
|
writel(0x00000e4a, 0x34101c14);
|
|
writel(0x0000f82c, 0x34101c18);
|
|
writel(0x00001050, 0x34101c1c);
|
|
writel(0x0000f426, 0x34101c20);
|
|
writel(0x00001456, 0x34101c24);
|
|
writel(0x0000ee22, 0x34101c28);
|
|
writel(0x0000185b, 0x34101c2c);
|
|
writel(0x0000e81d, 0x34101c30);
|
|
writel(0x00001c61, 0x34101c34);
|
|
writel(0x0000e019, 0x34101c38);
|
|
writel(0x00002266, 0x34101c3c);
|
|
writel(0x0000d615, 0x34101c40);
|
|
writel(0x00002a6b, 0x34101c44);
|
|
writel(0x0000cc11, 0x34101c48);
|
|
writel(0x00003270, 0x34101c4c);
|
|
writel(0x0000c20e, 0x34101c50);
|
|
writel(0x00003a74, 0x34101c54);
|
|
writel(0x0000b80c, 0x34101c58);
|
|
writel(0x00004476, 0x34101c5c);
|
|
writel(0x0000ac0a, 0x34101c60);
|
|
writel(0x00004c7a, 0x34101c64);
|
|
writel(0x0000a008, 0x34101c68);
|
|
writel(0x0000587c, 0x34101c6c);
|
|
writel(0x00009407, 0x34101c70);
|
|
writel(0x0000627e, 0x34101c74);
|
|
writel(0x00008806, 0x34101c78);
|
|
writel(0x00006e7f, 0x34101c7c);
|
|
writel((vou_out.Vactive << 16) + vou_out.Hactvie, 0x34101024);//writel(0x05000320, 0x34101024);
|
|
writel((vou_out.StartBlen << 16) + vou_out.Hlen, 0x34101028);//writel(0x0019033d, 0x34101028);
|
|
writel((vou_out.TBLineOfs << 16) + vou_out.TVLine, 0x3410102C);//writel(0x001b052f, 0x3410102C);
|
|
writel((vou_out.BBLineOfs << 16) + vou_out.BVLine, 0x34101030);//writel(0x00000000, 0x34101030);
|
|
writel(0xff00ff00, 0x34101034);
|
|
|
|
writel(0x349ea100, 0x34101060);
|
|
writel(0x00071900, 0x34101064);
|
|
writel(0x16700100, 0x34101068);
|
|
writel(0x34dc7487, 0x3410106c);
|
|
writel(0x00000001, 0x34101000);
|
|
//writel(0x00000003, 0x34101000); //vou test mode
|
|
|
|
writel(0x00000000, 0x34101014);
|
|
|
|
if(type == LOGO_YUV) {
|
|
//printf("LOGO_YUV !!!\n");
|
|
writel(0x00000040, 0x34101200);
|
|
writel((ph<<16) + pw, 0x34101208);
|
|
writel(pp, 0x3410120c);
|
|
writel(addr, 0x34101210);
|
|
writel(addr + pp*ph, 0x34101214);
|
|
writel((y<<16) + x, 0x34101218);
|
|
writel(0x00000000, 0x34101230);
|
|
writel(0x00000000, 0x34101234);
|
|
writel((h<<16) + w, 0x3410121c);
|
|
writel(0x80800001, 0x34101004);
|
|
writel(0x00000009, 0x34101000);
|
|
} else {
|
|
// w & h are not used
|
|
if (type == LOGO_RGB_8888) {
|
|
//printf("LOGO_RGB_8888 !!!\n");
|
|
//writel(0x00000002, 0x34101120); // mc abgr8888
|
|
//writel(0x0000001A, 0x34101120); //hik argb8888
|
|
writel(0x0000001A, 0x34101120);
|
|
} else if (type == LOGO_RGB_1555) {
|
|
//printf("LOGO_RGB_1555 !!!\n");
|
|
writel(0x00000010, 0x34101120); //mc argb1555
|
|
}
|
|
writel(0x00008000, 0x34101124);
|
|
writel(0x00000000, 0x34101128);
|
|
writel((ph<<16) + pw, 0x3410112c);
|
|
writel(pp, 0x34101130);
|
|
writel(addr, 0x34101134);
|
|
writel((y<<16) + x, 0x34101138);
|
|
writel(0x00000011, 0x34101000);
|
|
}
|
|
|
|
//set_work_ctrl()
|
|
writel(0x00000b00, 0x3410100c);
|
|
//set_work_ctrl()
|
|
writel(0x00000801, 0x3410100c);
|
|
#endif
|
|
}
|
|
|
|
void fast_osd_1024x600(int type, int x, int y, int w, int h, uint32_t addr, int pw, int pp, int ph)
|
|
{
|
|
#if (LOGO_VO_MIPI == LOGO_VO_EK79007)
|
|
uint32_t clkdiv = 0;
|
|
//
|
|
writelr(0x00000001, 0x1B000008, 3, 1); // DIR: set GPIO0-3 output
|
|
writelr(0x00000001, 0x1B000004, 3, 1); // DMSK: enable GPIO0-3
|
|
writelr(0x00000001, 0x1B000000, 3, 1); // DATA: GPIO0-3 output 1;
|
|
|
|
writel(0x00000002, 0x2820009c);
|
|
writel(0x00000002, 0x282000a0);
|
|
writel(0x00000002, 0x282000a4);
|
|
writel(0x00000002, 0x282000a8);
|
|
writel(0x00000002, 0x282000ac);
|
|
writel(0x00000002, 0x282000b0);
|
|
writel(0x00000002, 0x282000b4);
|
|
writel(0x00000002, 0x282000b8);
|
|
writel(0x00000002, 0x282000bc);
|
|
writel(0x00000002, 0x282000c0);
|
|
writels(0x00003f1f, 0x34000000);
|
|
writelc(0x00000400, 0x34000078);
|
|
writels(0x00000003, 0x28100030);
|
|
writels(0x0000007f, 0x34000014);
|
|
writelc(0x0000007f, 0x34000014);
|
|
writel(0x0000000f, 0x34100004);
|
|
writels(0x00000300, 0x34000078);
|
|
writelr(0x00000000, 0x343000a0, 2, 1);
|
|
writelr(0x00000001, 0x343000b4, 0, 1);
|
|
writelr(0x00000001, 0x343000a0, 3, 1);
|
|
writelc(0x00002000, 0x34500064);
|
|
writelr(0x00000001, 0x343000b4, 1, 1);
|
|
writelr(0x00000000, 0x343000b8, 16, 1);
|
|
writelr(0x00000001, 0x343000a0, 0, 1);
|
|
writelr(0x00000001, 0x343000a0, 1, 1);
|
|
writelr(0x00000000, 0x343000b4, 0, 1);
|
|
writels(0x00002000, 0x34500064);
|
|
writelr(0x00000000, 0x34500064, 1, 7);
|
|
writelr(0x00000007, 0x34500064, 9, 4);
|
|
writelr(0x00000001, 0x34500064, 13, 1);
|
|
writelr(0x00080000, 0x34500060, 0, 32);
|
|
writelr(0x00000002, 0x34500068, 0, 4);
|
|
writelr(0x00000002, 0x34500068, 4, 4);
|
|
writelr(0x00000007, 0x34500068, 8, 3);
|
|
writelr(0x00000007, 0x34500068, 11, 3);
|
|
writelr(0x00000001, 0x3450007c, 0, 8);
|
|
writelr(0x00000007, 0x3450007c, 8, 8);
|
|
writelr(0x0000001f, 0x34500074, 0, 5);
|
|
writelr(0x00000002, 0x34500074, 5, 2);
|
|
writelr(0x00000000, 0x34500074, 7, 3);
|
|
writelr(0x0a02687a, 0x3450005c, 0, 32);
|
|
writelr(0x000000b6, 0x34500058, 0, 32);
|
|
writelr(0x000001f4, 0x34500000, 0, 15);
|
|
writelr(0x00002710, 0x34500004, 0, 31);
|
|
writelr(0x00041902, 0x34500008, 0, 32);
|
|
writelr(0x00120609, 0x3450000c, 0, 32);
|
|
writelr(0x00000100, 0x34500078, 0, 32);
|
|
writelr(0x000001f4, 0x34500010, 0, 32);
|
|
writelr(0x00002710, 0x34500014, 0, 32);
|
|
writelr(0x041e0809, 0x34500018, 0, 32);
|
|
writelr(0x00000100, 0x3450001c, 0, 32);
|
|
writelr(0x0030183c, 0x34500020, 0, 32);
|
|
writelr(0x000001f4, 0x34500024, 0, 32);
|
|
writelr(0x00002710, 0x34500028, 0, 32);
|
|
writelr(0x041e0809, 0x3450002c, 0, 32);
|
|
writelr(0x00000100, 0x34500030, 0, 32);
|
|
writelr(0x000001f4, 0x34500034, 0, 32);
|
|
writelr(0x00002710, 0x34500038, 0, 32);
|
|
writelr(0x041e0809, 0x3450003c, 0, 32);
|
|
writelr(0x00000100, 0x34500040, 0, 32);
|
|
writelr(0x000001f4, 0x34500044, 0, 32);
|
|
writelr(0x00002710, 0x34500048, 0, 32);
|
|
writelr(0x041e0809, 0x3450004c, 0, 32);
|
|
writelr(0x00000100, 0x34500050, 0, 32);
|
|
writelr(0x0000000c, 0x34500054, 0, 8);
|
|
writelr(0x0000001f, 0x34500074, 0, 5);
|
|
writelr(0x00000000, 0x34500074, 5, 2);
|
|
writelr(0x00000000, 0x34500074, 7, 3);
|
|
writelr(0x00000001, 0x3450007c, 0, 8);
|
|
writelr(0x0000000a, 0x3450007c, 8, 8);
|
|
writelr(0x00000000, 0x3450006c, 0, 3);
|
|
writelr(0x00000001, 0x3450006c, 3, 1);
|
|
writelr(0x00000000, 0x3450006c, 4, 2);
|
|
writelr(0x00000000, 0x3450006c, 6, 1);
|
|
udelay(1000);
|
|
writelr(0x00000000, 0x34500064, 1, 7);
|
|
writelr(0x00000007, 0x34500064, 9, 4);
|
|
writelr(0x00000001, 0x34500064, 13, 1);
|
|
writelr(0x00000000, 0x3430000c, 0, 2);
|
|
writelr(0x00000005, 0x34300010, 0, 4);
|
|
writelr(0x00000001, 0x34300014, 2, 1);
|
|
writelr(0x00000001, 0x34300014, 1, 1);
|
|
writelr(0x0000000c, 0x34300008, 0, 8);
|
|
writelr(0x00000001, 0x34300008, 8, 8);
|
|
writel(0xffffff01, 0x34300068);
|
|
writelr(0x00000001, 0x3430001c, 0, 2);
|
|
writelr(0x00000004, 0x34300020, 0, 4);
|
|
writelr(0x00000001, 0x34300020, 16, 2);
|
|
writelr(0x00000001, 0x34300024, 0, 1);
|
|
writelr(0x00000064, 0x34300028, 16, 16);
|
|
writelr(0x00000008, 0x34300028, 0, 16);
|
|
writelr(0x00000001, 0x3430002c, 2, 1);
|
|
writelr(0x00000001, 0x3430002c, 3, 1);
|
|
writelr(0x00000001, 0x3430002c, 4, 1);
|
|
writelr(0x00000000, 0x34300030, 0, 2);
|
|
writelr(0x00000001, 0x34300034, 0, 1);
|
|
writelr(0x00000002, 0x34300038, 0, 2);
|
|
writelr(0x00000000, 0x34300038, 8, 1);
|
|
writelr(0x00000001, 0x34300038, 9, 1);
|
|
writelr(0x00000000, 0x34300038, 10, 1);
|
|
writelr(0x00000000, 0x34300038, 11, 1);
|
|
writelr(0x00000000, 0x34300038, 12, 1);
|
|
writelr(0x00000000, 0x34300038, 13, 1);
|
|
writelr(vou_out.Hactvie , 0x3430003c, 0, 14);//writelr(0x00000400, 0x3430003c, 0, 14);
|
|
writelr(0x00000001, 0x34300040, 0, 13);
|
|
writelr(0x0000000a, 0x34300044, 0, 13);
|
|
|
|
clkdiv = mipi_dphy_hal_get_pixel_clk_div();
|
|
|
|
writelr((vou_out.Hsync * clkdiv / 8), 0x34300048, 0, 12);//writelr(0x0000002d, 0x34300048, 0, 12);
|
|
writelr((vou_out.Hback * clkdiv / 8), 0x3430004c, 0, 12);//writelr(0x0000009d, 0x3430004c, 0, 12);
|
|
writelr(((vou_out.Hsync + vou_out.Hback + vou_out.Hfront + vou_out.Hactvie) * clkdiv / 8), 0x34300050, 0, 15);//writelr(0x000005e8, 0x34300050, 0, 15);
|
|
writelr(vou_out.Vsync, 0x34300054, 0, 10);//writelr(0x00000002, 0x34300054, 0, 10);
|
|
writelr(vou_out.Vback, 0x34300058, 0, 10);//writelr(0x00000017, 0x34300058, 0, 10);
|
|
writelr(vou_out.Vfront, 0x3430005c, 0, 10);//writelr(0x0000000c, 0x3430005c, 0, 10);
|
|
writelr(vou_out.Vactive, 0x34300060, 0, 14);//writelr(0x00000258, 0x34300060, 0, 14);
|
|
writelr(0x00000000, 0x34300018, 16, 8);
|
|
writelr(0x00000000, 0x34300018, 0, 8);
|
|
writelr(0x0000006e, 0x3430009c, 0, 15);
|
|
writelr(0x00000025, 0x3430009c, 16, 8);
|
|
writelr(0x00000000, 0x34300064, 0, 16);
|
|
writelr(0x00000001, 0x34300094, 0, 1);
|
|
writelr(0x00000000, 0x34300078, 0, 16);
|
|
writelr(0x00000000, 0x34300078, 16, 16);
|
|
writelr(0x00000000, 0x3430007c, 0, 16);
|
|
writelr(0x00000000, 0x34300080, 0, 16);
|
|
writelr(0x00000000, 0x34300084, 0, 16);
|
|
writelr(0x00000000, 0x34300088, 0, 16);
|
|
writelr(0x00000000, 0x3430008c, 0, 16);
|
|
writelr(0x00000087, 0x34300098, 0, 10);
|
|
writelr(0x00000025, 0x34300098, 16, 10);
|
|
writelr(0x00000000, 0x343000f4, 0, 15);
|
|
writelr(0x00000028, 0x343000a4, 8, 8);
|
|
writelr(0x00000003, 0x343000a4, 0, 2);
|
|
writelr(0x00000000, 0x343000a8, 0, 4);
|
|
writelr(0x00000000, 0x343000ac, 0, 4);
|
|
writelr(0x00000000, 0x34300100, 0, 1);
|
|
writelr(0x00000000, 0x34300100, 8, 1);
|
|
writelr(0x00000000, 0x34300100, 16, 1);
|
|
writel(0xffffffff, 0x343000c4);
|
|
writel(0xffffffff, 0x343000c8);
|
|
writelr(0x00000000, 0x34300004, 0, 1);
|
|
writelr(0x00000001, 0x34300004, 0, 1);
|
|
writels(0x00004000, 0x3400007c);
|
|
//----------------select size 1024/600/1/60------------------------
|
|
writel(0x00000008, 0x34100020);
|
|
writel(0x0000000a, 0x34100024);
|
|
writel(0x00000300, 0x34100028);
|
|
writel(0x00000600, 0x3410002c);
|
|
writel(0x00000007, 0x34100030);
|
|
writel(0x0000000a, 0x34100034);
|
|
writel(0x00000080, 0x34100038);
|
|
writel(0x00000100, 0x3410003c);
|
|
writel(0x00000001, 0x34100040);
|
|
writel(0x00000028, 0x34101f14);
|
|
writel(0x00000002, 0x34101f18);
|
|
writel(0x00000000, 0x34101f1c);
|
|
writelr(0x00478015, 0x3430006c, 0, 24);
|
|
writelr(0x00408115, 0x3430006c, 0, 24);
|
|
writelr(0x00048215, 0x3430006c, 0, 24);
|
|
writelr(0x00778315, 0x3430006c, 0, 24);
|
|
writelr(0x000f8415, 0x3430006c, 0, 24);
|
|
writelr(0x00708515, 0x3430006c, 0, 24);
|
|
writelr(0x00708615, 0x3430006c, 0, 24);
|
|
writelr(0x00001115, 0x3430006c, 0, 24);
|
|
writelr(0x00002915, 0x3430006c, 0, 24);
|
|
writel(0x00000000, 0x34300068);
|
|
writel(0x00000014, 0x3430002c);
|
|
writel(0x00000000, 0x34300034);
|
|
writel(0x00000000, 0x34101600);
|
|
writel(0x0001fe00, 0x34101604);
|
|
writel(0x00000001, 0x34101608);
|
|
writel(0x00000000, 0x3410160c);
|
|
writel(0x000007ff, 0x34101610);
|
|
writel(0x0001fff4, 0x34101614);
|
|
writel(0x0003f80e, 0x34101618);
|
|
writel(0x00000001, 0x3410161c);
|
|
writel(0x00000fff, 0x34101620);
|
|
writel(0x0001f3e9, 0x34101624);
|
|
writel(0x0003ee1f, 0x34101628);
|
|
writel(0x00000002, 0x3410162c);
|
|
writel(0x000013fe, 0x34101630);
|
|
writel(0x0001e3e1, 0x34101634);
|
|
writel(0x0003e233, 0x34101638);
|
|
writel(0x0003fe04, 0x3410163c);
|
|
writel(0x000017fe, 0x34101640);
|
|
writel(0x0001c9dc, 0x34101644);
|
|
writel(0x0003d847, 0x34101648);
|
|
writel(0x0003fe05, 0x3410164c);
|
|
writel(0x000019fe, 0x34101650);
|
|
writel(0x0001add8, 0x34101654);
|
|
writel(0x0003cc5c, 0x34101658);
|
|
writel(0x0003fe07, 0x3410165c);
|
|
writel(0x000019fd, 0x34101660);
|
|
writel(0x00018dd7, 0x34101664);
|
|
writel(0x0003c272, 0x34101668);
|
|
writel(0x0003fc09, 0x3410166c);
|
|
writel(0x000019fe, 0x34101670);
|
|
writel(0x000165d7, 0x34101674);
|
|
writel(0x0003ba88, 0x34101678);
|
|
writel(0x0003fc0a, 0x3410167c);
|
|
writel(0x000017fe, 0x34101680);
|
|
writel(0x00013dd9, 0x34101684);
|
|
writel(0x0003b29e, 0x34101688);
|
|
writel(0x0003fc0b, 0x3410168c);
|
|
writel(0x000015fe, 0x34101690);
|
|
writel(0x000111dd, 0x34101694);
|
|
writel(0x0003aeb2, 0x34101698);
|
|
writel(0x0003fc0c, 0x3410169c);
|
|
writel(0x000013fe, 0x341016a0);
|
|
writel(0x0000e7e1, 0x341016a4);
|
|
writel(0x0003aec5, 0x341016a8);
|
|
writel(0x0003fa0c, 0x341016ac);
|
|
writel(0x00000fff, 0x341016b0);
|
|
writel(0x0000b9e6, 0x341016b4);
|
|
writel(0x0003b0d6, 0x341016b8);
|
|
writel(0x0003fc0c, 0x341016bc);
|
|
writel(0x00000bff, 0x341016c0);
|
|
writel(0x00008dec, 0x341016c4);
|
|
writel(0x0003b8e5, 0x341016c8);
|
|
writel(0x0003fc0b, 0x341016cc);
|
|
writel(0x000009ff, 0x341016d0);
|
|
writel(0x000067f1, 0x341016d4);
|
|
writel(0x0003c2f1, 0x341016d8);
|
|
writel(0x0003fc09, 0x341016dc);
|
|
writel(0x00000400, 0x341016e0);
|
|
writel(0x00003ff7, 0x341016e4);
|
|
writel(0x0003d2f9, 0x341016e8);
|
|
writel(0x0003fe07, 0x341016ec);
|
|
writel(0x00000200, 0x341016f0);
|
|
writel(0x00001ffc, 0x341016f4);
|
|
writel(0x0003e8fe, 0x341016f8);
|
|
writel(0x0003fe03, 0x341016fc);
|
|
writel(0x0001fe00, 0x34101700);
|
|
writel(0x00000001, 0x34101704);
|
|
writel(0x0001fdf9, 0x34101708);
|
|
writel(0x00000009, 0x3410170c);
|
|
writel(0x0001eff4, 0x34101710);
|
|
writel(0x0003fe16, 0x34101714);
|
|
writel(0x0001d9f1, 0x34101718);
|
|
writel(0x0003fc25, 0x3410171c);
|
|
writel(0x0001bbf0, 0x34101720);
|
|
writel(0x0003fa36, 0x34101724);
|
|
writel(0x000197f0, 0x34101728);
|
|
writel(0x0003f64a, 0x3410172c);
|
|
writel(0x00016ff1, 0x34101730);
|
|
writel(0x0003f25f, 0x34101734);
|
|
writel(0x000143f3, 0x34101738);
|
|
writel(0x0003ee75, 0x3410173c);
|
|
writel(0x000117f5, 0x34101740);
|
|
writel(0x0003ea8b, 0x34101744);
|
|
writel(0x0000ebf7, 0x34101748);
|
|
writel(0x0003e6a1, 0x3410174c);
|
|
writel(0x0000bff9, 0x34101750);
|
|
writel(0x0003e2b7, 0x34101754);
|
|
writel(0x000095fb, 0x34101758);
|
|
writel(0x0003e0cb, 0x3410175c);
|
|
writel(0x00006dfd, 0x34101760);
|
|
writel(0x0003e0dd, 0x34101764);
|
|
writel(0x00004bfe, 0x34101768);
|
|
writel(0x0003e2ec, 0x3410176c);
|
|
writel(0x00002dff, 0x34101770);
|
|
writel(0x0003e8f7, 0x34101774);
|
|
writel(0x00001200, 0x34101778);
|
|
writel(0x0003f2fe, 0x3410177c);
|
|
writel(0x0001fe00, 0x34101800);
|
|
writel(0x00000001, 0x34101804);
|
|
writel(0x0001fdf9, 0x34101808);
|
|
writel(0x00000009, 0x3410180c);
|
|
writel(0x0001eff4, 0x34101810);
|
|
writel(0x0003fe16, 0x34101814);
|
|
writel(0x0001d9f1, 0x34101818);
|
|
writel(0x0003fc25, 0x3410181c);
|
|
writel(0x0001bbf0, 0x34101820);
|
|
writel(0x0003fa36, 0x34101824);
|
|
writel(0x000197f0, 0x34101828);
|
|
writel(0x0003f64a, 0x3410182c);
|
|
writel(0x00016ff1, 0x34101830);
|
|
writel(0x0003f25f, 0x34101834);
|
|
writel(0x000143f3, 0x34101838);
|
|
writel(0x0003ee75, 0x3410183c);
|
|
writel(0x000117f5, 0x34101840);
|
|
writel(0x0003ea8b, 0x34101844);
|
|
writel(0x0000ebf7, 0x34101848);
|
|
writel(0x0003e6a1, 0x3410184c);
|
|
writel(0x0000bff9, 0x34101850);
|
|
writel(0x0003e2b7, 0x34101854);
|
|
writel(0x000095fb, 0x34101858);
|
|
writel(0x0003e0cb, 0x3410185c);
|
|
writel(0x00006dfd, 0x34101860);
|
|
writel(0x0003e0dd, 0x34101864);
|
|
writel(0x00004bfe, 0x34101868);
|
|
writel(0x0003e2ec, 0x3410186c);
|
|
writel(0x00002dff, 0x34101870);
|
|
writel(0x0003e8f7, 0x34101874);
|
|
writel(0x00001200, 0x34101878);
|
|
writel(0x0003f2fe, 0x3410187c);
|
|
writel(0x00003404, 0x34101a00);
|
|
writel(0x00009a3b, 0x34101a04);
|
|
writel(0x0000343c, 0x34101a08);
|
|
writel(0x00000004, 0x34101a0c);
|
|
writel(0x00003004, 0x34101a10);
|
|
writel(0x00009a39, 0x34101a14);
|
|
writel(0x0000383d, 0x34101a18);
|
|
writel(0x00000005, 0x34101a1c);
|
|
writel(0x00002c03, 0x34101a20);
|
|
writel(0x00009838, 0x34101a24);
|
|
writel(0x00003c3f, 0x34101a28);
|
|
writel(0x00000006, 0x34101a2c);
|
|
writel(0x00002803, 0x34101a30);
|
|
writel(0x00009a35, 0x34101a34);
|
|
writel(0x00003e41, 0x34101a38);
|
|
writel(0x00000007, 0x34101a3c);
|
|
writel(0x00002402, 0x34101a40);
|
|
writel(0x00009634, 0x34101a44);
|
|
writel(0x00004642, 0x34101a48);
|
|
writel(0x00000008, 0x34101a4c);
|
|
writel(0x00002202, 0x34101a50);
|
|
writel(0x00009431, 0x34101a54);
|
|
writel(0x00004a44, 0x34101a58);
|
|
writel(0x00000009, 0x34101a5c);
|
|
writel(0x00001e01, 0x34101a60);
|
|
writel(0x0000962f, 0x34101a64);
|
|
writel(0x00004e45, 0x34101a68);
|
|
writel(0x0000000a, 0x34101a6c);
|
|
writel(0x00001c01, 0x34101a70);
|
|
writel(0x0000922d, 0x34101a74);
|
|
writel(0x00005247, 0x34101a78);
|
|
writel(0x0000000b, 0x34101a7c);
|
|
writel(0x00001801, 0x34101a80);
|
|
writel(0x0000902b, 0x34101a84);
|
|
writel(0x00005648, 0x34101a88);
|
|
writel(0x0000020c, 0x34101a8c);
|
|
writel(0x00001600, 0x34101a90);
|
|
writel(0x00008e29, 0x34101a94);
|
|
writel(0x00005a49, 0x34101a98);
|
|
writel(0x0000020e, 0x34101a9c);
|
|
writel(0x00001400, 0x34101aa0);
|
|
writel(0x00008c27, 0x34101aa4);
|
|
writel(0x00005e4a, 0x34101aa8);
|
|
writel(0x0000020f, 0x34101aac);
|
|
writel(0x00001200, 0x34101ab0);
|
|
writel(0x00008825, 0x34101ab4);
|
|
writel(0x0000624a, 0x34101ab8);
|
|
writel(0x00000411, 0x34101abc);
|
|
writel(0x00001000, 0x34101ac0);
|
|
writel(0x00008423, 0x34101ac4);
|
|
writel(0x0000684b, 0x34101ac8);
|
|
writel(0x00000412, 0x34101acc);
|
|
writel(0x00000e00, 0x34101ad0);
|
|
writel(0x0000841f, 0x34101ad4);
|
|
writel(0x00006a4c, 0x34101ad8);
|
|
writel(0x00000614, 0x34101adc);
|
|
writel(0x00000c00, 0x34101ae0);
|
|
writel(0x00007e1e, 0x34101ae4);
|
|
writel(0x0000704c, 0x34101ae8);
|
|
writel(0x00000616, 0x34101aec);
|
|
writel(0x00000a00, 0x34101af0);
|
|
writel(0x00007c1c, 0x34101af4);
|
|
writel(0x0000724c, 0x34101af8);
|
|
writel(0x00000818, 0x34101afc);
|
|
writel(0x0000fe3d, 0x34101b00);
|
|
writel(0x00000c3e, 0x34101b04);
|
|
writel(0x0000fe37, 0x34101b08);
|
|
writel(0x00000c44, 0x34101b0c);
|
|
writel(0x0000fc31, 0x34101b10);
|
|
writel(0x00000e4a, 0x34101b14);
|
|
writel(0x0000f82c, 0x34101b18);
|
|
writel(0x00001050, 0x34101b1c);
|
|
writel(0x0000f426, 0x34101b20);
|
|
writel(0x00001456, 0x34101b24);
|
|
writel(0x0000ee22, 0x34101b28);
|
|
writel(0x0000185b, 0x34101b2c);
|
|
writel(0x0000e81d, 0x34101b30);
|
|
writel(0x00001c61, 0x34101b34);
|
|
writel(0x0000e019, 0x34101b38);
|
|
writel(0x00002266, 0x34101b3c);
|
|
writel(0x0000d615, 0x34101b40);
|
|
writel(0x00002a6b, 0x34101b44);
|
|
writel(0x0000cc11, 0x34101b48);
|
|
writel(0x00003270, 0x34101b4c);
|
|
writel(0x0000c20e, 0x34101b50);
|
|
writel(0x00003a74, 0x34101b54);
|
|
writel(0x0000b80c, 0x34101b58);
|
|
writel(0x00004476, 0x34101b5c);
|
|
writel(0x0000ac0a, 0x34101b60);
|
|
writel(0x00004c7a, 0x34101b64);
|
|
writel(0x0000a008, 0x34101b68);
|
|
writel(0x0000587c, 0x34101b6c);
|
|
writel(0x00009407, 0x34101b70);
|
|
writel(0x0000627e, 0x34101b74);
|
|
writel(0x00008806, 0x34101b78);
|
|
writel(0x00006e7f, 0x34101b7c);
|
|
writel(0x0000fe3d, 0x34101c00);
|
|
writel(0x00000c3e, 0x34101c04);
|
|
writel(0x0000fe37, 0x34101c08);
|
|
writel(0x00000c44, 0x34101c0c);
|
|
writel(0x0000fc31, 0x34101c10);
|
|
writel(0x00000e4a, 0x34101c14);
|
|
writel(0x0000f82c, 0x34101c18);
|
|
writel(0x00001050, 0x34101c1c);
|
|
writel(0x0000f426, 0x34101c20);
|
|
writel(0x00001456, 0x34101c24);
|
|
writel(0x0000ee22, 0x34101c28);
|
|
writel(0x0000185b, 0x34101c2c);
|
|
writel(0x0000e81d, 0x34101c30);
|
|
writel(0x00001c61, 0x34101c34);
|
|
writel(0x0000e019, 0x34101c38);
|
|
writel(0x00002266, 0x34101c3c);
|
|
writel(0x0000d615, 0x34101c40);
|
|
writel(0x00002a6b, 0x34101c44);
|
|
writel(0x0000cc11, 0x34101c48);
|
|
writel(0x00003270, 0x34101c4c);
|
|
writel(0x0000c20e, 0x34101c50);
|
|
writel(0x00003a74, 0x34101c54);
|
|
writel(0x0000b80c, 0x34101c58);
|
|
writel(0x00004476, 0x34101c5c);
|
|
writel(0x0000ac0a, 0x34101c60);
|
|
writel(0x00004c7a, 0x34101c64);
|
|
writel(0x0000a008, 0x34101c68);
|
|
writel(0x0000587c, 0x34101c6c);
|
|
writel(0x00009407, 0x34101c70);
|
|
writel(0x0000627e, 0x34101c74);
|
|
writel(0x00008806, 0x34101c78);
|
|
writel(0x00006e7f, 0x34101c7c);
|
|
writel((vou_out.Vactive << 16) + vou_out.Hactvie, 0x34101024);//writel(0x02580400, 0x34101024);
|
|
writel((vou_out.StartBlen << 16) + vou_out.Hlen, 0x34101028);//writel(0x009F053F, 0x34101028);
|
|
writel((vou_out.TBLineOfs << 16) + vou_out.TVLine, 0x3410102C);//writel(0x0016027A, 0x3410102C);
|
|
writel((vou_out.BBLineOfs << 16) + vou_out.BVLine, 0x34101030);//writel(0x00000000, 0x34101030);
|
|
writel(0xff00ff00, 0x34101034);
|
|
writel(0x356ebd01, 0x34101060);
|
|
writel(0x00069901, 0x34101064);
|
|
writel(0x14e00101, 0x34101068);
|
|
writel(0x33fc4861, 0x3410106c);
|
|
writel(0x00000001, 0x34101000);
|
|
|
|
writel(0x00000000, 0x34101014);
|
|
|
|
if (LOGO_YUV == type) {
|
|
writel(0x00000040, 0x34101200);
|
|
writel((ph<<16) + pw, 0x34101208);
|
|
writel(pp, 0x3410120c);
|
|
writel(addr, 0x34101210);
|
|
writel(addr + pp*ph, 0x34101214);
|
|
writel((y<<16) + x, 0x34101218);
|
|
writel(0x00000000, 0x34101230);
|
|
writel(0x00000000, 0x34101234);
|
|
writel((h<<16) + w, 0x3410121c);
|
|
writel(0x80800001, 0x34101004);
|
|
writel(0x00000009, 0x34101000);
|
|
} else {
|
|
// w & h are not used
|
|
writel(0x0000000a, 0x34101120);
|
|
writel(0x00008000, 0x34101124);
|
|
writel(0x00000000, 0x34101128);
|
|
writel((ph<<16) + pw, 0x3410112c);
|
|
writel(pp, 0x34101130);
|
|
writel(addr, 0x34101134);
|
|
writel((y<<16) + x, 0x34101138);
|
|
writel(0x00000011, 0x34101000);
|
|
}
|
|
//set_work_ctrl()
|
|
writel(0x00000b00, 0x3410100c);
|
|
//set_work_ctrl()
|
|
writel(0x00000801, 0x3410100c);
|
|
#endif
|
|
}
|
|
|
|
// width / height / address must be 16 aligned
|
|
void fast_jpeg(uint32_t jpg, uint32_t jpg_len, uint32_t y, uint32_t uv)
|
|
{
|
|
int cnt = 100;
|
|
int status = 0;
|
|
|
|
printf("begin to soft reset jpeg\r\n");
|
|
// jpgd soft reset
|
|
writels(0x00000040, 0x24000030);
|
|
mdelay(100);
|
|
writelc(0x00000040, 0x24000030);
|
|
|
|
writels(0x00000006, 0x24000028);
|
|
// jpgd enable clk
|
|
writels(0x00000009, 0x2400002c);
|
|
|
|
writel(0x00000001, 0x26100004);
|
|
writel(jpg_len, 0x26100050);
|
|
writel(0x00000001, 0x26100008);
|
|
writel(jpg, 0x2610003C); /* JPG */
|
|
writel(y, 0x26100034); /* Y */
|
|
writel(uv , 0x26100040); /* UV */
|
|
writel(0x00000000, 0x26100058);
|
|
writels(0x0000000A, 0x26100014);
|
|
writel(0x80000001, 0x26100010);
|
|
|
|
// wait decode done
|
|
while (cnt-- > 0) {
|
|
udelay(1000);
|
|
status = readl(0x26100004);
|
|
if ((status & 0x01) != 0) {
|
|
printf("JPEG: decode done.\n");
|
|
|
|
writels(0x00000001, 0x26100004);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (cnt <= 0) {
|
|
printf("JPEG: decode timeout.\n");
|
|
}
|
|
}
|
|
|
|
|
|
void logo_display(void)
|
|
{
|
|
fast_osd_init();
|
|
|
|
#if (LOGO_VO_HDMI == LOGO_VO_1024x768)
|
|
fast_osd_hdmi(LOGO_YUV, (1024 - logo_w)/2, (768 - logo_h)/2, logo_w, logo_h, (uint32_t)logo_o_addr, logo_w, logo_w, logo_h);
|
|
#elif (LOGO_VO_HDMI == LOGO_VO_1920x1080)
|
|
fast_osd_hdmi(LOGO_YUV, (1920 - logo_w)/2, (1080 - logo_h)/2, logo_w, logo_h, (uint32_t)logo_o_addr, logo_w, logo_w, logo_h);
|
|
#elif (LOGO_VO_MIPI == LOGO_VO_ILI9881)
|
|
fast_osd_ili9881(LOGO_YUV, 0, 0, 800, 1280, (uint32_t)logo_o_addr, logo_w, logo_w, logo_h);
|
|
#elif (LOGO_VO_MIPI == LOGO_VO_EK79007)
|
|
fast_osd_1024x600(LOGO_YUV, 0, 0, 1024, 600, (uint32_t)logo_o_addr, logo_w, logo_w, logo_h);
|
|
#endif
|
|
}
|
|
|
|
static int do_yuv(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
if (argc >= 3) {
|
|
logo_o_addr = (unsigned char *)simple_strtoul(argv[1], NULL, 16);
|
|
logo_w = simple_strtoul(argv[2], NULL, 10);
|
|
logo_h = simple_strtoul(argv[3], NULL, 10);
|
|
|
|
if (0 == logo_o_addr \
|
|
|| 0 == logo_w \
|
|
|| 0 == logo_h) {
|
|
printf("YUV: no valid input!\n");
|
|
return 0;
|
|
}
|
|
|
|
logo_display();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int do_jpeg(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
uint32_t jpg_len = 0x100000; /* max jpeg file size 1MB */
|
|
if (argc >= 3) {
|
|
logo_i_addr = (unsigned char *)simple_strtoul(argv[1], NULL, 16);
|
|
logo_o_addr = (unsigned char *)simple_strtoul(argv[2], NULL, 16);
|
|
logo_w = simple_strtoul(argv[3], NULL, 10);
|
|
logo_h = simple_strtoul(argv[4], NULL, 10);
|
|
|
|
if (0 == logo_i_addr \
|
|
|| 0 == logo_o_addr \
|
|
|| 0 == logo_w \
|
|
|| 0 == logo_h) {
|
|
printf("JPEG: no valid input!\n");
|
|
return 0;
|
|
}
|
|
|
|
fast_jpeg((uint32_t)logo_i_addr, jpg_len, (uint32_t)logo_o_addr, (uint32_t)(logo_o_addr + logo_w*logo_h));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
U_BOOT_CMD(
|
|
yuv, 4, 4, do_yuv,
|
|
"show yuv logo.\n",
|
|
"\t- yuv addr w h show yuv logo\n"
|
|
);
|
|
|
|
|
|
U_BOOT_CMD(
|
|
jpeg, 5, 5, do_jpeg,
|
|
"decode jpeg.\n",
|
|
"\t- jpeg jpg_addr yuv_addr w h jpeg decoder\n"
|
|
);
|
|
|