diff src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c @ 0:4e78acac3d88

src/{condat,cs,gpf,nucleus}: import from Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:23:26 +0000
parents
children 502a0a3f6a49
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c	Fri Oct 16 06:23:26 2020 +0000
@@ -0,0 +1,51 @@
+#include "r2d/lcds/c139/colors.h"
+
+#define R2D_MB_PRIM_SIZE 2000
+
+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_BORDER);
+}
+
+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;
+}