summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2009-05-01 23:37:30 +0200
committerLars-Peter Clausen <lars@metafoo.de>2009-05-01 23:37:30 +0200
commit8b82afb51440f33fcbbe609a50ceb2c5986adf57 (patch)
tree139c2da99108c3a7703610489897cfdf2b8624d9
parent16a993d8b17ef623a21b003f6f08adb86c76de77 (diff)
Code cleanup:
* Delete unused files * Move engine code to it's own file * Remove some proxy functions
-rw-r--r--src/glamo-engine.c236
-rw-r--r--src/glamo-engine.h48
-rw-r--r--src/glamo-funcs.c558
-rw-r--r--src/glamo-funcs.h85
4 files changed, 284 insertions, 643 deletions
diff --git a/src/glamo-engine.c b/src/glamo-engine.c
new file mode 100644
index 0000000..895f019
--- /dev/null
+++ b/src/glamo-engine.c
@@ -0,0 +1,236 @@
+/*
+ * Copyright © 2009 Lars-Peter Clausen <lars@metafoo.de>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include "glamo.h"
+#include "glamo-engine.h"
+
+void
+GLAMOEngineReset(GlamoPtr pGlamo, enum GLAMOEngine engine)
+{
+ CARD32 reg;
+ CARD16 mask;
+ volatile char *mmio = pGlamo->reg_base;
+
+ if (!mmio)
+ return;
+
+ switch (engine) {
+ case GLAMO_ENGINE_CMDQ:
+ reg = GLAMO_REG_CLOCK_2D;
+ mask = GLAMO_CLOCK_2D_CMDQ_RESET;
+ break;
+ case GLAMO_ENGINE_ISP:
+ reg = GLAMO_REG_CLOCK_ISP;
+ mask = GLAMO_CLOCK_ISP2_RESET;
+ break;
+ case GLAMO_ENGINE_2D:
+ reg = GLAMO_REG_CLOCK_2D;
+ mask = GLAMO_CLOCK_2D_RESET;
+ break;
+ default:
+ return;
+ break;
+ }
+ MMIOSetBitMask(mmio, reg, mask, 0xffff);
+ sleep(1);
+ MMIOSetBitMask(mmio, reg, mask, 0);
+ sleep(1);
+}
+
+void
+GLAMOEngineDisable(GlamoPtr pGlamo, enum GLAMOEngine engine)
+{
+ volatile char *mmio = pGlamo->reg_base;
+
+ if (!mmio)
+ return;
+
+ switch (engine) {
+ case GLAMO_ENGINE_CMDQ:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
+ GLAMO_CLOCK_2D_EN_M6CLK,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_CMDQ,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_MCLK,
+ 0);
+ break;
+ case GLAMO_ENGINE_ISP:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_ISP,
+ GLAMO_CLOCK_ISP_EN_M2CLK |
+ GLAMO_CLOCK_ISP_EN_I1CLK,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_2,
+ GLAMO_CLOCK_GEN52_EN_DIV_ICLK,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_JCLK,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_ISP,
+ 0);
+ break;
+ case GLAMO_ENGINE_2D:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
+ GLAMO_CLOCK_2D_EN_M7CLK |
+ GLAMO_CLOCK_2D_EN_GCLK |
+ GLAMO_CLOCK_2D_DG_M7CLK |
+ GLAMO_CLOCK_2D_DG_GCLK,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_2D,
+ 0);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_GCLK,
+ 0);
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GLAMOEngineEnable(GlamoPtr pGlamo, enum GLAMOEngine engine)
+{
+ volatile char *mmio = pGlamo->reg_base;
+
+ if (!mmio)
+ return;
+
+ switch (engine) {
+ case GLAMO_ENGINE_CMDQ:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
+ GLAMO_CLOCK_2D_EN_M6CLK,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_CMDQ,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_MCLK,
+ 0xffff);
+ break;
+ case GLAMO_ENGINE_ISP:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_ISP,
+ GLAMO_CLOCK_ISP_EN_M2CLK |
+ GLAMO_CLOCK_ISP_EN_I1CLK,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_2,
+ GLAMO_CLOCK_GEN52_EN_DIV_ICLK,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_JCLK,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_ISP,
+ 0xffff);
+ break;
+ case GLAMO_ENGINE_2D:
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_2D,
+ GLAMO_CLOCK_2D_EN_M7CLK |
+ GLAMO_CLOCK_2D_EN_GCLK |
+ GLAMO_CLOCK_2D_DG_M7CLK |
+ GLAMO_CLOCK_2D_DG_GCLK,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_HOSTBUS(2),
+ GLAMO_HOSTBUS2_MMIO_EN_2D,
+ 0xffff);
+ MMIOSetBitMask(mmio, GLAMO_REG_CLOCK_GEN5_1,
+ GLAMO_CLOCK_GEN51_EN_DIV_GCLK,
+ 0xffff);
+ break;
+ default:
+ break;
+ }
+}
+
+bool
+GLAMOEngineBusy(GlamoPtr pGlamo, enum GLAMOEngine engine)
+{
+ volatile char *mmio = pGlamo->reg_base;
+ CARD16 status, mask, val;
+
+ if (!mmio)
+ return FALSE;
+
+ switch (engine)
+ {
+ case GLAMO_ENGINE_CMDQ:
+ mask = 0x3;
+ val = mask;
+ break;
+ case GLAMO_ENGINE_ISP:
+ mask = 0x3 | (1 << 8);
+ val = 0x3;
+ break;
+ case GLAMO_ENGINE_2D:
+ mask = 0x3 | (1 << 4);
+ val = 0x3;
+ break;
+ case GLAMO_ENGINE_ALL:
+ default:
+ mask = 1 << 2;
+ val = mask;
+ break;
+ }
+
+ status = MMIO_IN16(mmio, GLAMO_REG_CMDQ_STATUS);
+
+ return !((status & mask) == val);
+}
+
+void
+GLAMOEngineWait(GlamoPtr pGlamo,
+ enum GLAMOEngine engine)
+{
+ volatile char *mmio = pGlamo->reg_base;
+ CARD16 status, mask, val;
+
+ if (!mmio)
+ return;
+
+ switch (engine)
+ {
+ case GLAMO_ENGINE_CMDQ:
+ mask = 0x3;
+ val = mask;
+ break;
+ case GLAMO_ENGINE_ISP:
+ mask = 0x3 | (1 << 8);
+ val = 0x3;
+ break;
+ case GLAMO_ENGINE_2D:
+ mask = 0x3 | (1 << 4);
+ val = 0x3;
+ break;
+ case GLAMO_ENGINE_ALL:
+ default:
+ mask = 1 << 2;
+ val = mask;
+ break;
+ }
+
+ do {
+ status = MMIO_IN16(mmio, GLAMO_REG_CMDQ_STATUS);
+ } while ((status & mask) != val);
+}
diff --git a/src/glamo-engine.h b/src/glamo-engine.h
new file mode 100644
index 0000000..187fa1f
--- /dev/null
+++ b/src/glamo-engine.h
@@ -0,0 +1,48 @@
+/*
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include <stdbool.h>
+
+enum GLAMOEngine {
+ GLAMO_ENGINE_CMDQ,
+ GLAMO_ENGINE_ISP,
+ GLAMO_ENGINE_2D,
+ GLAMO_ENGINE_MPEG,
+ GLAMO_ENGINE_ALL,
+ NB_GLAMO_ENGINES /*should be the last entry*/
+};
+
+void
+GLAMOEngineEnable(GlamoPtr pGlamo, enum GLAMOEngine engine);
+
+void
+GLAMOEngineDisable(GlamoPtr pGlamo, enum GLAMOEngine engine);
+
+void
+GLAMOEngineReset(GlamoPtr pGlamo, enum GLAMOEngine engine);
+
+bool
+GLAMOEngineBusy(GlamoPtr pGlamo, enum GLAMOEngine engine);
+
+void
+GLAMOEngineWait(GlamoPtr pGlamo, enum GLAMOEngine engine);
+
+
diff --git a/src/glamo-funcs.c b/src/glamo-funcs.c
deleted file mode 100644
index 0ef64b8..0000000
--- a/src/glamo-funcs.c
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Copyright © 2007 OpenMoko, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- * Author:
- * Dodji Seketeli <dodji@openedhand.com>
- */
-#include <unistd.h>
-#if 0
-
-
-#include "glamo-log.h"
-#include "glamo.h"
-#include "glamo-funcs.h"
-#include "glamo-regs.h"
-#include "glamo-cmdq.h"
-void
-GLAMOSetBitMask(GlamoPtr pGlamo, int reg, int mask, int val)
-{
- MMIOSetBitMask(pGlamo->reg_base, reg, mask, val);
-}
-
-void
-setCmdMode (GlamoPtr pGlamo, Bool on)
-{
- if (on) {
- GLAMO_LOG("mark\n");
- /*TODO: busy waiting is bad*/
- while (!MMIO_IN16(pGlamo->reg_base, GLAMO_REG_LCD_STATUS1)
- & (1 << 15)) {
- GLAMO_LOG("mark\n");
- usleep(1 * 1000);
- }
- GLAMO_LOG("mark\n");
- MMIO_OUT16(pGlamo->reg_base,
- GLAMO_REG_LCD_COMMAND1,
- GLAMO_LCD_CMD_TYPE_DISP |
- GLAMO_LCD_CMD_DATA_FIRE_VSYNC);
- GLAMO_LOG("mark\n");
- while (!MMIO_IN16(pGlamo->reg_base, GLAMO_REG_LCD_STATUS2)
- & (1 << 12)) {
- GLAMO_LOG("mark\n");
- usleep(1 * 1000);
- }
- /* wait */
- GLAMO_LOG("mark\n");
- usleep(100 * 1000);
- } else {
- GLAMO_LOG("mark\n");
- MMIO_OUT16(pGlamo->reg_base,
- GLAMO_REG_LCD_COMMAND1,
- GLAMO_LCD_CMD_TYPE_DISP |
- GLAMO_LCD_CMD_DATA_DISP_SYNC);
- GLAMO_LOG("mark\n");
- MMIO_OUT16(pGlamo->reg_base,
- GLAMO_REG_LCD_COMMAND1,
- GLAMO_LCD_CMD_TYPE_DISP |
- GLAMO_LCD_CMD_DATA_DISP_FIRE);
- }
-}
-
-#define STATUS_ENABLED 0x1
-static int engine_status[NB_GLAMO_ENGINES];
-
-void
-GLAMOResetEngine(GlamoPtr pGlamo, enum GLAMOEngine engine)
-{
- int reg, mask;
-
- GLAMO_LOG("enter\n");
-
- if (!(engine_status[engine] & STATUS_ENABLED))
- return;
-
- switch (engine) {
- case GLAMO_ENGINE_MPEG:
- reg = GLAMO_REG_CLOCK_MPEG;
- mask = GLAMO_CLOCK_MPEG_DEC_RESET;
- break;
- case GLAMO_ENGINE_ISP:
- reg = GLAMO_REG_CLOCK_ISP;
- mask = GLAMO_CLOCK_ISP2_RESET;
- break;
- case GLAMO_ENGINE_CMDQ:
- reg = GLAMO_REG_CLOCK_2D;
- mask = GLAMO_CLOCK_2D_CMDQ_RESET;
- break;
- case GLAMO_ENGINE_2D:
- reg = GLAMO_REG_CLOCK_2D;
- mask = GLAMO_CLOCK_2D_RESET;
- break;
- default:
- return;
- }
-
- MMIOSetBitMask(pGlamo->reg_base, reg, mask, 0xffff);
- usleep(1000);
- MMIOSetBitMask(pGlamo->reg_base, reg, mask, 0);
- usleep(1000);
-
- GLAMO_LOG("leave\n");
-}
-
-void
-GLAMOEnableEngine(GlamoPtr pGlamo, enum GLAMOEngine engine)
-{
- GLAMO_LOG("enter\n");
- if (engine_status[engine] & STATUS_ENABLED)
- return;
-
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_GEN5_1,
- GLAMO_CLOCK_GEN51_EN_DIV_MCLK,
- 0xffff);
-
- switch (engine) {
- case GLAMO_ENGINE_MPEG:
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_MPEG,
- GLAMO_CLOCK_MPEG_EN_X6CLK |
- GLAMO_CLOCK_MPEG_DG_X6CLK |
- GLAMO_CLOCK_MPEG_EN_X4CLK |
- GLAMO_CLOCK_MPEG_DG_X4CLK |
- GLAMO_CLOCK_MPEG_EN_X2CLK |
- GLAMO_CLOCK_MPEG_DG_X2CLK |
- GLAMO_CLOCK_MPEG_EN_X0CLK |
- GLAMO_CLOCK_MPEG_DG_X0CLK,
- 0xffff & ~GLAMO_CLOCK_MPEG_DG_X0CLK);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_MPROC,
- GLAMO_CLOCK_MPROC_EN_M4CLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_GEN5_1,
- GLAMO_CLOCK_GEN51_EN_DIV_JCLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_HOSTBUS(2),
- GLAMO_HOSTBUS2_MMIO_EN_MPEG |
- GLAMO_HOSTBUS2_MMIO_EN_MICROP1,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_MPROC,
- GLAMO_CLOCK_MPROC_EN_KCLK,
- 0xffff);
- break;
- case GLAMO_ENGINE_ISP:
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_ISP,
- GLAMO_CLOCK_ISP_EN_M2CLK |
- GLAMO_CLOCK_ISP_EN_I1CLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_GEN5_2,
- GLAMO_CLOCK_GEN52_EN_DIV_ICLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_GEN5_1,
- GLAMO_CLOCK_GEN51_EN_DIV_JCLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_HOSTBUS(2),
- GLAMO_HOSTBUS2_MMIO_EN_ISP,
- 0xffff);
- break;
- case GLAMO_ENGINE_CMDQ:
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_2D,
- GLAMO_CLOCK_2D_EN_M6CLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_HOSTBUS(2),
- GLAMO_HOSTBUS2_MMIO_EN_CMDQ,
- 0xffff);
- break;
- case GLAMO_ENGINE_2D:
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_2D,
- GLAMO_CLOCK_2D_EN_M7CLK |
- GLAMO_CLOCK_2D_EN_GCLK |
- GLAMO_CLOCK_2D_DG_M7CLK |
- GLAMO_CLOCK_2D_DG_GCLK,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_HOSTBUS(2),
- GLAMO_HOSTBUS2_MMIO_EN_2D,
- 0xffff);
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_CLOCK_GEN5_1,
- GLAMO_CLOCK_GEN51_EN_DIV_GCLK,
- 0xffff);
- break;
- default:
- break;
- }
- usleep(1000);
- engine_status[engine] |= STATUS_ENABLED;
- GLAMO_LOG("leave\n");
-}
-
-
-#ifdef XV
-void
-GLAMOISPWaitEngineIdle (GlamoPtr pGlamo)
-{
- GLAMO_LOG("enter\n");
- while (1) {
- int val = MMIO_IN16(pGlamo->reg_base, GLAMO_REG_ISP_STATUS);
- if (val & 0x1) {
- usleep(1 * 1000);
- GLAMO_LOG("isp busy\n");
- continue;
- }
- break;
- }
- GLAMO_LOG("leave\n");
-}
-
-static void
-SetOnFlyLUTRegs(GlamoPtr pGlamo)
-{
- struct {
- int src_block_x;
- int src_block_y;
- int src_block_w;
- int src_block_h;
- int jpeg_out_y;
- int jpeg_out_x;
- int fifo_full_cnt;
- int in_length;
- int fifo_data_cnt;
- int in_height;
- } onfly;
- RING_LOCALS;
-
- GLAMO_LOG("enter\n");
-
- onfly.src_block_y = 32;
- onfly.src_block_x = 32;
- onfly.src_block_w = 36;
- onfly.src_block_h = 35;
- onfly.jpeg_out_y = 32;
- onfly.jpeg_out_x = 32;
- onfly.fifo_full_cnt = onfly.src_block_w * 2 + 2;
- onfly.in_length = onfly.jpeg_out_x + 3;
- onfly.fifo_data_cnt = onfly.src_block_w * onfly.src_block_h / 2;
- onfly.in_height = onfly.jpeg_out_y + 2;
-
- BEGIN_CMDQ(10);
- OUT_REG(GLAMO_REG_ISP_ONFLY_MODE1,
- onfly.src_block_y << 10 | onfly.src_block_x << 2);
- OUT_REG(GLAMO_REG_ISP_ONFLY_MODE2,
- onfly.src_block_h << 8 | onfly.src_block_w);
- OUT_REG(GLAMO_REG_ISP_ONFLY_MODE3,
- onfly.jpeg_out_y << 8 | onfly.jpeg_out_x);
- OUT_REG(GLAMO_REG_ISP_ONFLY_MODE4,
- onfly.fifo_full_cnt << 8 | onfly.in_length);
- OUT_REG(GLAMO_REG_ISP_ONFLY_MODE5,
- onfly.fifo_data_cnt << 6 | onfly.in_height);
- END_CMDQ();
- GLAMO_LOG("leave\n");
-}
-
-static void
-SetScalingWeightMatrixRegs(GlamoPtr pGlamo)
-{
- int left = 1 << 14;
- RING_LOCALS;
-
- GLAMO_LOG("enter\n");
-
- /* nearest */
-
- BEGIN_CMDQ(12);
- OUT_BURST(GLAMO_REG_ISP_DEC_SCALEH_MATRIX, 10);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 0, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 2, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 4, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 6, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 8, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 10, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 12, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 14, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 16, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEH_MATRIX + 18, 0);
- END_CMDQ();
-
- BEGIN_CMDQ(12);
- OUT_BURST(GLAMO_REG_ISP_DEC_SCALEV_MATRIX, 10);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 0, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 2, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 4, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 6, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 8, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 10, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 12, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 14, 0);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 16, left);
- OUT_BURST_REG(GLAMO_REG_ISP_DEC_SCALEV_MATRIX + 18, 0);
- END_CMDQ();
- GLAMO_LOG("leave\n");
-}
-
-static void
-GLAMOISPYuvRgbPipelineInit(GlamoPtr pGlamo)
-{
- unsigned short en3;
- RING_LOCALS;
-
- GLAMO_LOG("enter.glamos:%#x\n", pGlamo);
-
- BEGIN_CMDQ(18);
-
- /*
- * set the ISP into YUV 4:2:0 planar mode,
- * enable scaling.
- */
- en3 = GLAMO_ISP_EN3_PLANE_MODE |
- GLAMO_ISP_EN3_YUV_INPUT |
- GLAMO_ISP_EN3_YUV420 |
- GLAMO_ISP_EN3_SCALE_IMPROVE;
-
- OUT_REG(GLAMO_REG_ISP_EN3, en3);
-
- /*
- * In 8.8 fixed point,
- *
- * R = Y + 1.402 (Cr-128)
- * = Y + 0x0167 Cr - 0xb3
- *
- * G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
- * = Y - 0x0058 Cb - 0x00b6 Cr + 0x89
- *
- * B = Y + 1.772 (Cb-128)
- * = Y + 0x01c5 Cb - 0xe2
- */
-
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_11, 0x0167);
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_21, 0x01c5);
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_32, 0x00b6);
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_33, 0x0058);
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_RG, 0xb3 << 8 | 0x89);
- OUT_REG(GLAMO_REG_ISP_YUV2RGB_B, 0xe2);
-
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_EN, GLAMO_ISP_PORT1_EN_OUTPUT);
- OUT_REG(GLAMO_REG_ISP_PORT2_EN, GLAMO_ISP_PORT2_EN_DECODE);
-
- END_CMDQ();
-
- SetOnFlyLUTRegs(pGlamo);
- SetScalingWeightMatrixRegs(pGlamo);
-
- GLAMO_LOG("leave\n");
-}
-
-#if 0
-static void
-GLAMOISPColorKeyOverlayInit(GlamoPtr pGlamo)
-{
- GLAMO_RETURN_IF_FAIL (pGlamo);
-
- /*GLAMOSetBitMask(pScreen,
- GLAMO_REG_ISP_EN2,
- GLAMO_ISP_EN2_OVERLAY,
- 0x0001);*/
- MMIOSetBitMask(pGlamo->reg_base,
- GLAMO_REG_ISP_EN4,
- GLAMO_ISP_EN4_OVERLAY|GLAMO_ISP_EN4_LCD_OVERLAY,
- 0x0003);
-}
-#endif
-
-void
-GLAMOISPSetColorKeyOverlay(GlamoPtr pGlamo,
- CARD32 start_addr/*addr on 23bits*/,
- CARD16 x /*12bits*/,
- CARD16 y /*12bits*/,
- CARD16 width /*12bits*/,
- CARD16 height /*12bits*/,
- CARD16 pitch /*12bits*/,
- CARD8 red_key /*5bits*/,
- CARD8 green_key /*6bits*/,
- CARD8 blue_key /*5bits*/)
-{
- unsigned short green_red_keys = 0;
- RING_LOCALS;
-
- GLAMO_LOG("enter. start_addr:%#x, (x,y):(%hd,%hd), "
- "width,height:(%dx%d), pitch:%d\n"
- "red, green, blue:(%d, %d, %d)\n",
- start_addr, x, y, width, height, pitch,
- red_key, green_key, blue_key);
-
- green_red_keys = (green_key << (8+2)) & 0xff00;
- green_red_keys |= (red_key << 3) & 0x00ff;
-
- BEGIN_CMDQ(18);
-
- OUT_REG(GLAMO_REG_ISP_OVERLAY_GR_KEY, green_red_keys);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_B_KEY, (blue_key << 3) && 0x00ff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_ADDRL, start_addr & 0x00ff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_ADDRH, start_addr & 0x7f00);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_X, x & 0x0fff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_Y, y & 0x0fff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_WIDTH, width & 0x0fff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_HEIGHT, width & 0x0fff);
- OUT_REG(GLAMO_REG_ISP_OVERLAY_PITCH, pitch & 0x0fff);
- /*TODO: no idea what this one is*/
- /*OUT_REG(GLAMO_REG_ISP_OVERLAY_BLOCK_XY, 0);*/
-
- END_CMDQ();
-
- GLAMO_LOG("leave\n");
-}
-
-void
-GLAMOISPSetColorKeyOverlay2(GlamoPtr pGlamo,
- CARD32 start_addr/*addr on 23bits*/,
- CARD16 x /*12bits*/,
- CARD16 y /*12bits*/,
- CARD16 width /*12bits*/,
- CARD16 height /*12bits*/,
- CARD16 pitch /*12bits*/,
- CARD16 color_key /*16bits*/)
-{
- CARD8 red, green, blue;
-
- /*assume color key has rgb 565 format*/
- red = (color_key >> 11);
- green = (color_key >> 5) & 0x003f;
- blue = (color_key) & 0x001f;
- GLAMOISPSetColorKeyOverlay(pGlamo, start_addr, x, y,
- width, height, pitch,
- red, green, blue);
-}
-
-void
-GLAMOISPEngineInit (GlamoPtr pGlamo)
-{
- static Bool isp_enabled, isp_reset;
-
- GLAMO_LOG("enter\n");
- if (!isp_enabled) {
- GLAMOEnableEngine(pGlamo, GLAMO_ENGINE_ISP);
- isp_enabled = TRUE;
- GLAMO_LOG("enabled ISP\n");
- }
- if (!isp_reset) {
- GLAMOResetEngine(pGlamo, GLAMO_ENGINE_ISP);
- GLAMO_LOG("reset ISP\n");
- }
- GLAMOISPYuvRgbPipelineInit(pGlamo);
- /*GLAMOISPColorKeyOverlayInit(pScreen);*/
- GLAMO_LOG("leave\n");
-}
-
-void
-GLAMOISPDisplayYUVPlanarFrame (GlamoPtr pGlamo,
- unsigned int y_addr,
- unsigned int u_addr,
- unsigned int v_addr,
- short y_pitch,
- short uv_pitch,
- short src_crop_rect_width,
- short src_crop_rect_height,
- unsigned int dst_addr,
- short dst_pitch,
- short dst_rect_width,
- short dst_rect_height,
- short scale_w,
- short scale_h)
-{
- RING_LOCALS;
-
-
- GLAMO_LOG("enter: y_addr:%#x, u_addr:%#x, v_addr:%#x\n"
- "y_pitch:%hd, uv_pitch:%hd\n"
- "src_crop_rect(%hdx%hd)\n"
- "dst_addr:%#x, dst_pitch:%hd\n"
- "dst_rect(%hdx%hd), dst_scale(%hdx%hd)\n",
- y_addr, u_addr, v_addr,
- y_pitch, uv_pitch,
- src_crop_rect_width, src_crop_rect_height,
- dst_addr, dst_pitch,
- dst_rect_width, dst_rect_height,
- scale_w, scale_h);
-
-
- /*scale_w <<= 11;*/
- /*scale_h <<= 11;*/
-
-
- BEGIN_CMDQ(38);
-
- /*
- * set Y, U, V pitches.
- */
- OUT_REG(GLAMO_REG_ISP_DEC_PITCH_Y, y_pitch & 0x1fff);
- OUT_REG(GLAMO_REG_ISP_DEC_PITCH_UV, uv_pitch & 0x1fff);
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_PITCH, dst_pitch & 0x1fff);
-
- /*
- * set yuv starting addresses, pitches and crop rect size
- */
- OUT_REG(GLAMO_REG_ISP_DEC_Y_ADDRL, y_addr & 0xffff);
- OUT_REG(GLAMO_REG_ISP_DEC_Y_ADDRH, (y_addr >> 16) & 0x7f);
-
- OUT_REG(GLAMO_REG_ISP_DEC_U_ADDRL, u_addr & 0xffff);
- OUT_REG(GLAMO_REG_ISP_DEC_U_ADDRH, (u_addr >> 16) & 0x7f);
-
- OUT_REG(GLAMO_REG_ISP_DEC_V_ADDRL, v_addr & 0xffff);
- OUT_REG(GLAMO_REG_ISP_DEC_V_ADDRH, (v_addr >> 16) & 0x7f);
-
- OUT_REG(GLAMO_REG_ISP_DEC_HEIGHT, src_crop_rect_height & 0x1fff);
- OUT_REG(GLAMO_REG_ISP_DEC_WIDTH, src_crop_rect_width & 0x1fff);
-
- /*
- * set output coordinates/sizes and scaling
- */
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_0_ADDRL, dst_addr & 0xffff);
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_0_ADDRH, (dst_addr >> 16) & 0x7f);
-
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_WIDTH, dst_rect_width & 0x1fff);
- OUT_REG(GLAMO_REG_ISP_PORT1_DEC_HEIGHT, dst_rect_height & 0x1fff);
-
- OUT_REG(GLAMO_REG_ISP_DEC_SCALEH, scale_w);
- OUT_REG(GLAMO_REG_ISP_DEC_SCALEV, scale_h);
-
- OUT_REG(GLAMO_REG_ISP_EN1, GLAMO_ISP_EN1_FIRE_ISP);
- OUT_REG(GLAMO_REG_ISP_EN1, 0);
-
- END_CMDQ();
-
- GLAMOEngineWait(pGlamo, GLAMO_ENGINE_ALL);
-
- GLAMO_LOG("leave\n");
-
-}
-
-#endif /*XV*/
-#endif
diff --git a/src/glamo-funcs.h b/src/glamo-funcs.h
deleted file mode 100644
index 6b021cb..0000000
--- a/src/glamo-funcs.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright © 2007 OpenMoko, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- * Author:
- * Dodji Seketeli <dodji@openedhand.com>
- */
-#ifndef _GLAMO_FUNCS_H_
-#define _GLAMO_FUNCS_H_
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <assert.h>
-
-void glamoOutReg(GlamoPtr pGlamo, unsigned short reg, unsigned short val);
-
-unsigned short glamoInReg(GlamoPtr pGlamo, unsigned short reg);
-
-void glamoSetBitMask(GlamoPtr pGlamo, int reg, int mask, int val);
-
-void setCmdMode (GlamoPtr pGlamo, Bool on);
-
-Bool glamoRotateLCD (GlamoPtr pGlamo, Rotation rotation);
-
-#ifdef XV
-
-void GLAMOISPWaitEngineIdle (GlamoPtr pGlamo);
-void GLAMOISPEngineInit (GlamoPtr pGlamo);
-void GLAMOISPDisplayYUVPlanarFrame (GlamoPtr pGlamo,
- unsigned int y_addr,
- unsigned int u_addr,
- unsigned int v_addr,
- short y_pitch,
- short uv_pitch,
- short src_crop_rect_width,
- short src_crop_rect_height,
- unsigned int dst_addr,
- short dst_pitch,
- short dst_rect_width,
- short dst_rect_height,
- short scale_w,
- short scale_h);
-
-void GLAMOISPSetColorKeyOverlay(GlamoPtr pGlamo,
- CARD32 start_addr/*addr on 23bits*/,
- CARD16 x /*12bits*/,
- CARD16 y /*12bits*/,
- CARD16 width /*12bits*/,
- CARD16 height /*12bits*/,
- CARD16 pitch /*12bits*/,
- CARD8 red_key /*5bits*/,
- CARD8 green_key /*6bits*/,
- CARD8 blue_key /*5bits*/);
-
-void GLAMOISPSetColorKeyOverlay2(GlamoPtr pGlamo,
- CARD32 start_addr/*addr on 23bits*/,
- CARD16 x /*12bits*/,
- CARD16 y /*12bits*/,
- CARD16 width /*12bits*/,
- CARD16 height /*12bits*/,
- CARD16 pitch /*12bits*/,
- CARD16 color_key /*16bits*/);
-#endif /*XV*/
-
-#endif /*_GLAMO_FUNCS_H_*/
-