53 #define d4dlcdhw_dragonfire_lcdc_ID 1
58 #if (D4D_MK_STR(D4D_LLD_LCD_HW) == d4dlcdhw_dragonfire_lcdc_ID)
67 #if D4D_COLOR_SYSTEM != D4D_COLOR_SYSTEM_RGB565
68 #error The eGUI low level driver "d4dlcdhw_dragonfire_lcdc" not supported selected type of D4D_COLOR_SYSTEM. To run this driver just select D4D_COLOR_SYSTEM_RGB565.
75 static unsigned char D4DLCDHW_Init_DragonFireLCDC(
void);
76 static unsigned char D4DLCDHW_DeInit_DragonFireLCDC(
void);
77 static void D4DLCDHW_WriteData_DragonFireLCDC(
unsigned long addr,
D4D_COLOR value);
78 static D4D_COLOR D4DLCDHW_ReadData_DragonFireLCDC(
unsigned long addr);
83 static void Configure_VEEEN_ON(
void);
84 static void Configure_LCD_Ports(
void);
85 static void Configure_Bursting(
void);
87 static void LCDC_Enable(
void);
88 static void LCDC_Disable(
void);
90 extern void mcf5227_cache_invalidate(
void);
103 D4DLCDHW_Init_DragonFireLCDC,
104 D4DLCDHW_WriteData_DragonFireLCDC,
105 D4DLCDHW_ReadData_DragonFireLCDC,
106 D4DLCDHW_GetFbDescriptor_DragonFireLCDC,
107 D4DLCDHW_PinCtl_DragonFireLCDC,
108 D4DLCD_FlushBuffer_DragonFireLCDC,
109 D4DLCDHW_DeInit_DragonFireLCDC
129 unsigned char Panel_Timing[][6] =
132 {{ 22, 14, 69, 24, 4, 19 },
133 { 16, 4, 72, 16, 2, 8 },
134 { 16, 4, 50, 40, 4, 8 },
135 { 36, 4, 96, 40, 4, 35 },
136 { 48, 14, 102, 32, 1, 35 },
137 { 15, 1, 6, 9, 1, 7 }};
165 static unsigned char D4DLCDHW_Init_DragonFireLCDC(
void)
167 Configure_VEEEN_ON();
168 Configure_LCD_Ports();
170 #if D4DLCDHWFB_MIRROWED == 1
179 MCF_LCDC_LCD_DCR = ( 0 | MCF_LCDC_LCD_DCR_HM(4) | MCF_LCDC_LCD_DCR_TM(8) );
181 Configure_Bursting();
204 static unsigned char D4DLCDHW_DeInit_DragonFireLCDC(
void)
220 static void D4DLCDHW_WriteData_DragonFireLCDC(
unsigned long addr,
D4D_COLOR value)
236 static D4D_COLOR D4DLCDHW_ReadData_DragonFireLCDC(
unsigned long addr)
296 static void Configure_VEEEN_ON(
void)
302 MCF_GPIO_PDDR_I2C |= MCF_GPIO_PDDR_I2C_PDDR_I2C1;
304 MCF_GPIO_PODR_I2C |= MCF_GPIO_PODR_I2C_PODR_I2C1;
313 | MCF_PAD_PAR_BE_PAR_BE2_BE2
314 | MCF_PAD_PAR_BE_PAR_BE3_BE3 );
317 MCF_GPIO_PDDR_BE &= ~MCF_GPIO_PDDR_BE_PDDR_BE0;
330 MCF_GPIO_PAR_BE = ( 0
331 | MCF_GPIO_PAR_BE_PAR_BE3
332 | MCF_GPIO_PAR_BE_PAR_BE2 );
335 MCF_GPIO_PDDR_BE &= ~MCF_GPIO_PDDR_BE_PDDR_BE0;
339 MCF_GPIO_PDDR_TIMER = ( 0
340 | MCF_GPIO_PDDR_TIMER_PDDR_TIMER1
341 | MCF_GPIO_PDDR_TIMER_PDDR_TIMER0
345 MCF_GPIO_PODR_TIMER = ( 0
346 | MCF_GPIO_PODR_TIMER_PODR_TIMER1
347 | MCF_GPIO_PODR_TIMER_PODR_TIMER0
363 static void Configure_LCD_Ports(
void)
365 MCF_PAD_PAR_LCDCTL = ( 0
366 | MCF_PAD_PAR_LCDCTL_PAR_ACD_OE(2)
367 | MCF_PAD_PAR_LCDCTL_PAR_FLM_VSYNC
368 | MCF_PAD_PAR_LCDCTL_PAR_LP_HSYNC
369 | MCF_PAD_PAR_LCDCTL_PAR_LSCLK );
371 MCF_PAD_PAR_LCDH = ( 0
372 | MCF_PAD_PAR_LCDH_PAR_LD17(3)
373 | MCF_PAD_PAR_LCDH_PAR_LD16(3)
374 | MCF_PAD_PAR_LCDH_PAR_LD15(3)
375 | MCF_PAD_PAR_LCDH_PAR_LD14(3)
376 | MCF_PAD_PAR_LCDH_PAR_LD13(3)
377 | MCF_PAD_PAR_LCDH_PAR_LD12(3) );
379 MCF_PAD_PAR_LCDL = ( 0
380 | MCF_PAD_PAR_LCDL_PAR_LD11(3)
381 | MCF_PAD_PAR_LCDL_PAR_LD10(3)
382 | MCF_PAD_PAR_LCDL_PAR_LD9(3)
383 | MCF_PAD_PAR_LCDL_PAR_LD8(3)
384 | MCF_PAD_PAR_LCDL_PAR_LD7(3)
385 | MCF_PAD_PAR_LCDL_PAR_LD6(3)
386 | MCF_PAD_PAR_LCDL_PAR_LD5(3)
387 | MCF_PAD_PAR_LCDL_PAR_LD4(3)
388 | MCF_PAD_PAR_LCDL_PAR_LD3(3)
389 | MCF_PAD_PAR_LCDL_PAR_LD2(3)
390 | MCF_PAD_PAR_LCDL_PAR_LD1(3)
391 | MCF_PAD_PAR_LCDL_PAR_LD0(3) );
393 MCF_PAD_PAR_TIMER |= (MCF_PAD_PAR_TIMER_PAR_T0IN(1)
394 | MCF_PAD_PAR_TIMER_PAR_T1IN(1)
397 MCF_PAD_PAR_UART |= MCF_PAD_PAR_UART_PAR_U1CTS(1)
398 | MCF_PAD_PAR_UART_PAR_U1RTS(1);
410 static void Configure_Bursting(
void)
412 MCF_SCM_BCR = MCF_SCM_BCR_SBE_BURST_EN;
429 MCF_LCDC_LCD_PCR = (
unsigned long)(0
432 |MCF_LCDC_LCD_PCR_BPIX(BPP)
434 |MCF_LCDC_LCD_PCR_ACDSEL
435 |MCF_LCDC_LCD_PCR_ACD(ACD_DIV)
436 |MCF_LCDC_LCD_PCR_SCLKSEL
438 |MCF_LCDC_LCD_PCR_PCD(PixClkDiv)
445 MCF_LCDC_LCD_PCR |= ( 0
446 | MCF_LCDC_LCD_PCR_CLKPOL
449 | MCF_LCDC_LCD_PCR_END_SEL
450 #if D4DLCDHWFB_MIRROWED == 1
451 | MCF_LCDC_LCD_PCR_REV_VS
454 MCF_LCDC_LCD_SCR = 0x00120300;
455 MCF_LCDC_LCD_PCCR = ( 0
456 | MCF_LCDC_LCD_PCCR_CLS_HI_WIDTH(0xA9)
457 | MCF_LCDC_LCD_PCCR_SCR(0x1)
458 | MCF_LCDC_LCD_PCCR_CC_EN
459 | MCF_LCDC_LCD_PCCR_PW(0xFF) );
463 MCF_LCDC_LCD_PCR |= (
464 MCF_LCDC_LCD_PCR_CLKPOL
465 #ifdef _DIGITALPHOTOALBUM_H
466 |MCF_LCDC_LCD_PCR_END_SEL );
472 MCF_LCDC_LCD_PCR |= (
473 MCF_LCDC_LCD_PCR_CLKPOL
474 |MCF_LCDC_LCD_PCR_END_SEL
478 MCF_LCDC_LCD_PCR |= (
479 MCF_LCDC_LCD_PCR_LPPOL
480 |MCF_LCDC_LCD_PCR_END_SEL
484 MCF_LCDC_LCD_PCR |= (
485 MCF_LCDC_LCD_PCR_LPPOL
486 | MCF_LCDC_LCD_PCR_OEPOL
493 MCF_LCDC_LCD_PCR |= ( 0
494 | MCF_LCDC_LCD_PCR_PIXPOL
495 | MCF_LCDC_LCD_PCR_OEPOL
497 | MCF_LCDC_LCD_PCR_SHARP
498 | MCF_LCDC_LCD_PCR_END_SEL
499 | MCF_LCDC_LCD_PCR_SWAP_SEL
507 MCF_LCDC_LCD_PCR |= ( 0
508 | MCF_LCDC_LCD_PCR_PIXPOL
509 | MCF_LCDC_LCD_PCR_OEPOL
510 | MCF_LCDC_LCD_PCR_ACD(ACD_DIV)
511 | MCF_LCDC_LCD_PCR_SHARP
512 | MCF_LCDC_LCD_PCR_END_SEL
513 | MCF_LCDC_LCD_PCR_SWAP_SEL
516 MCF_LCDC_LCD_SCR = 0x00120300;
517 MCF_LCDC_LCD_PCCR = ( 0
518 | MCF_LCDC_LCD_PCCR_CLS_HI_WIDTH(0xA9)
519 | MCF_LCDC_LCD_PCCR_SCR(0x1)
520 | MCF_LCDC_LCD_PCCR_CC_EN
521 | MCF_LCDC_LCD_PCCR_PW(0xFF) );
532 MCF_LCDC_LCD_HCR = (
unsigned long)(0
533 |MCF_LCDC_LCD_HCR_H_WAIT_1(Panel_Timing[panel][0])
534 |MCF_LCDC_LCD_HCR_H_WIDTH(Panel_Timing[panel][1])
535 |MCF_LCDC_LCD_HCR_H_WAIT_2(Panel_Timing[panel][2])
540 MCF_LCDC_LCD_VCR = (
unsigned long)(0
541 |MCF_LCDC_LCD_VCR_V_WAIT_1(Panel_Timing[panel][3])
542 |MCF_LCDC_LCD_VCR_V_WIDTH(Panel_Timing[panel][4])
543 |MCF_LCDC_LCD_VCR_V_WAIT_2(Panel_Timing[panel][5])
555 static void LCDC_Enable(
void)
556 { (MCF_CCM_MISCCR |= MCF_CCM_MISCCR_LCDCHEN);
567 static void LCDC_Disable(
void)
568 { (MCF_CCM_MISCCR &= ~MCF_CCM_MISCCR_LCDCHEN);
571 #endif //(D4D_MK_STR(D4D_LLD_LCD_HW) == d4dlcdhw_dragonfire_lcdc_ID)
#define D4DLCDHWFB_START_ADDRESS
#define D4DLCDHWFB_Y_BPP_BYTE
#define MCF_LCDC_LCD_PCR_PANEL_TYPE(x)
D4D Driver main header file.
D4D driver - dragonfire_lcdc hardware lcd driver function header file.
D4DHW_PIN_STATE
D4D low level MCU pin state enumeration type.
D4DLCD_FLUSH_MODE
D4D low level eGUI flush screen types enumeration.
D4D Driver private header file.
D4DLCDHW_PINS
D4D low level MCU types definition for general LCD screen control signals.
D4D low level frame buffer LCD interface API structure.
D4D low level frame buffer description structure.
#define D4D_UNUSED(x)
Macro used just for notify compiler that the input parameter is not used.
D4D driver - resistive touch screen driver function header file.
#define D4DLCDHWFB_PANEL_TYPE
LWord D4D_COLOR
Type definition of eGUI color variables.
#define D4DLCDHWFB_PANEL_CLKDIV