?? r2d_task_init_i_phillips.c
字號:
/*
+-----------------------------------------------------------------------------
| Project : ETM-Lite
| Modul : LCD
+-----------------------------------------------------------------------------
| Copyright 2002 Texas Instruments Berlin, AG
| All rights reserved.
|
| This file is confidential and a trade secret of Texas
| Instruments Berlin, AG
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
| Purpose :
|
+-----------------------------------------------------------------------------
*/
#define PHILIPS_LCD 1
#include "r2d/lcds/i_sample/r2d_task_init_i.h"
#include "r2d/lcds/i_sample/r2d_tfd_lcd.h"
#include "r2d/r2d_i.h"
#include "r2d/r2d_independance_layer.h"
#include "r2d/r2d_env.h"
#include "r2d/lcds/i_sample/r2d_lcd_dma.h"
#include "dma/dma_api.h"
#include "dma/dma_message.h"
#include "r2d_board_isample_i.h"
#include "r2d/r2d_config.h"
#include <stdio.h>
#include <stdlib.h>
#include "lcd.h"
int lcd_text_char_width;
int lcd_text_char_height;
const unsigned char *lcd_text_font;
unsigned char *lcd_text_buffer;
int lcd_text_x_size, lcd_text_y_size; // Size of the text window
int lcd_text_xpos, lcd_text_ypos;
int lcd_text_underline;
int lcd_text_auto_refresh;
unsigned char lcd_text_scroll_lines;
unsigned int lcd_text_front_color, lcd_text_back_color;
// unsigned char lcd_text_buf[176 * 220 * 3]; // (X * Y * RGB) - buffer for text screen
//unsigned char lcd_text_buf[176 * 220]; // (X * Y) - buffer for text screen
T_CKCTL_DIV LcdClockDiv = CLK_DIV_BY_8 ;
void r2d_nop_delay(UWORD32 ms)
{
unsigned short a;
while (ms-- > 0) for (a=0;a<2000;a++) asm(" nop"); // Increased from 1000 to 2000 (JP, TI-DK)
}
void write_lcd_index_data(int index, int data)
{
LCD_WriteSetInstruction(index);
r2d_nop_delay(1);
LCD_WriteSetDisplay(data);
}
void gate_driver_serial_transfer(int index)
{
LCD_WriteSetInstruction(0x0a); // Gate driver serial transfer
r2d_nop_delay(1);
LCD_WriteSetDisplay(0x0100 | index);
r2d_nop_delay(20);
}
void read_lcd_id()
{
LCD_WriteSetInstruction(0);
r2d_nop_delay(1);
LCD_DataSetType_M(LCD_DISPLAY); // select data not index
}
void LCD_enable_lcd_mux()
{
(*(volatile SYS_UWORD16*) CONF_LCD_CAM_NAND)|=0x7;
}
void init_lcd_ctrl_registers(void)
{
LCD_enable_lcd_mux();
/* Initialise LCD interface */
LCD_ResetInterface(); /* Reset LCD interface */
LCD_Clock13MHzEnable(); /* Enable clock of the interface */
LCD_TXClockDiv(1); /* Division factor to 1 (13 MHz) */
LCD_FifoEmptyItDisable(); /* Disable all IT */
LCD_ReadEventItDisable();
LCD_DMADisable(); /* Disable DMA */
#if (VIRTIO==0)
LCD_8086InterfaceTypeSelected(); /* Select 8086 like LCD */
#else
LCD_6800InterfaceTypeSelected();
#endif
LCD_WriteMSBFirst(); /* Write MSB first */
LCD_TxNotSuspended(); /* Transmission not suspended */
LCD_0DummyWriteCycle(); /* 0 dummy write cycle */
}
//******************************************************************************
void r2d_refresh_task_init()
{
UWORD32 c,i;
// UWORD16 *data;
// int a, b;
LCD_ResetController();
r2d_nop_delay(20);
LCD_EndResetController();
LCD_SelectController0_M; // Select controller 0
read_lcd_id();
write_lcd_index_data(0x00, 0x0001); // start oscilation
r2d_nop_delay(20);
write_lcd_index_data(0x01, 0x011b); // Driver output control
write_lcd_index_data(0x02, 0x0700); // Driving waveform
write_lcd_index_data(0x03, 0x1030); // Entry mode
write_lcd_index_data(0x04, 0x0000); // Compare register
write_lcd_index_data(0x05, 0x0000); // Compare register
write_lcd_index_data(0x07, 0x0000); // Display control 1 (OFF)
write_lcd_index_data(0x08, 0x0503); // Display control 2
write_lcd_index_data(0x0a, 0x0000); // Gate driver
write_lcd_index_data(0x0b, 0x400c); // Frame freq
write_lcd_index_data(0x0c, 0x0000); // External if control
write_lcd_index_data(0x0d, 0x0700); // LTPS I/F
write_lcd_index_data(0x40, 0x0000); // Gate scan position
write_lcd_index_data(0x41, 0x0000); // Vertical scroll
write_lcd_index_data(0x42, 0xdb00); // 1st screen driving pos
write_lcd_index_data(0x43, 0x0000); // 2nd screen driving pos
write_lcd_index_data(0x44, 0xaf00); // Horiz RAM address
write_lcd_index_data(0x45, 0xdb00); // Vert RAM address
write_lcd_index_data(0x21, 0x0000); // RAM address set
write_lcd_index_data(0x23, 0x0000); // RAM write mask
write_lcd_index_data(0x24, 0x0000); // RAM write mask
write_lcd_index_data(0x30, 0x0000); // Gamma
write_lcd_index_data(0x31, 0x0501); // Gamma
write_lcd_index_data(0x32, 0x0307); // Gamma
write_lcd_index_data(0x33, 0x0400); // Gamma
write_lcd_index_data(0x34, 0x0004); // Gamma
write_lcd_index_data(0x35, 0x0504); // Gamma
write_lcd_index_data(0x36, 0x0605); // Gamma
write_lcd_index_data(0x37, 0x0004); // Gamma
// Power ON sequence:
write_lcd_index_data(0x11, 0x8805); // Power control 2
write_lcd_index_data(0x12, 0x0004); // Power control 3
write_lcd_index_data(0x13, 0x0601); // Power control 4
write_lcd_index_data(0x14, 0x161f); // Power control 5
gate_driver_serial_transfer(1);
gate_driver_serial_transfer(2);
write_lcd_index_data(0x10, 0x2064); // Power control 1
gate_driver_serial_transfer(0);
write_lcd_index_data(0x14, 0x361f); // Power control 5
gate_driver_serial_transfer(0);
write_lcd_index_data(0x01, 0x011b); // Driver output control
write_lcd_index_data(0x40, 0x0000); // Gate scan position
gate_driver_serial_transfer(6);
write_lcd_index_data(0x02, 0x0700); // Driving waveform
gate_driver_serial_transfer(7);
write_lcd_index_data(0x13, 0x0611); // Power control 4
gate_driver_serial_transfer(1);
write_lcd_index_data(0x21, 0x0000); // RAM address set
LCD_WriteSetInstruction(0x22);
LCD_DataTypeSelection(LCD_DISPLAY);
for (c=0;c < 100;c++)
for (i=0;i<22;i++)
{
// Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F
LCD_Write(0x8F00);
LCD_Write(0x8F00);
LCD_Write(0x8F00);
LCD_Write(0x8F00);
LCD_Write(0x8F00);
LCD_Write(0x8F00);
LCD_Write(0x8F00);
}
for (;c < 200;c++)
for (i=0;i<22;i++)
{
// Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
LCD_Write(0x700E);
}
for (;c < 220;c++)
for (i=0;i<22;i++)
{
// Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F
LCD_Write(0xF1);
LCD_Write(0xF1);
LCD_Write(0xF1); // BLUE
LCD_Write(0xF1);
LCD_Write(0xF1);
LCD_Write(0xF1);
LCD_Write(0xF1);
LCD_Write(0xF1);
}
// Turn ON sequence
write_lcd_index_data(0x07, 0x0005); // Display control 1
r2d_nop_delay(20);
write_lcd_index_data(0x07, 0x0025); // Display control 1
r2d_nop_delay(20);
gate_driver_serial_transfer(0);
write_lcd_index_data(0x07, 0x0027); // Display control 1
r2d_nop_delay(20);
write_lcd_index_data(0x07, 0x0037); // Display control 1
r2d_nop_delay(20);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -