view src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c @ 276:4221c724c664

R2D: preparations for adding LCD hardware suspend handling
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 07 Sep 2021 21:05:38 +0000
parents 502a0a3f6a49
children
line wrap: on
line source

#include "r2d/lcds/c139/colors.h"

#define R2D_MB_PRIM_SIZE 4000

extern void c139_lcd_ctrl_cmd(UINT8 cmd, UINT8 param);
extern void c139_set_lcd_addr_region(UINT8 xstart, UINT8 xend,
					UINT8 ystart, UINT8 yend);
extern void c139_lcd_send_pix(UINT16 pixval);

void uwire_init_lcd(void)
{
	* ( UINT16 *) CNTL_RST &= ~(0x04); // releases reset_out
	* ( UINT16 *) CNTL_RST |= (0x04); // set reset_out to 0
	rvf_delay(RVF_MS_TO_TICKS(5));    // waits for 5 ms
	* ( UINT16 *) CNTL_RST &= ~(0x04); // releases reset_out

	* (volatile UINT16 *) SR1 = CS0_FRQ_FINT_2;
	* (volatile UINT16 *) SR3 = SR3_CLK_EN; // enables the uwire clock
	* (volatile UINT16 *) CSR = INDEX_CS0; // selects CS0
}

static void r2d_refresh_task_init(void)
{
	UINT16 i;

	uwire_init_lcd();
	rvf_delay(RVF_MS_TO_TICKS(5));    // waits for 5 ms

	/* LCD controller init */
	c139_lcd_ctrl_cmd(0x3F, 0x01);
	c139_lcd_ctrl_cmd(0x20, 0x03);
	c139_lcd_ctrl_cmd(0x31, 0x03);

	/* initial hw framebuffer clearing */
	c139_set_lcd_addr_region(0, 95, 0, 63);
	for (i = 0; i < 96 * 64; i++)
		c139_lcd_send_pix(LCD16_COLOR_WHITE);
}

static void r2d_refresh_task_kill(void)
{
}

static void r2d_dithering_init(void)
{
   R2D_MALLOC(r2d_mb_id,UINT32,sizeof(UINT32)*4,r2d_g_dithering_matrix);
   r2d_g_dithering_matrix[0]=0;
   r2d_g_dithering_matrix[1]=2;
   r2d_g_dithering_matrix[2]=3;
   r2d_g_dithering_matrix[3]=1;
}