📄 glamo-regs.patch
字号:
Index: u-boot/board/neo1973/gta02/glamo-regs.h===================================================================--- /dev/null+++ u-boot/board/neo1973/gta02/glamo-regs.h@@ -0,0 +1,628 @@+#ifndef _GLAMO_REGS_H+#define _GLAMO_REGS_H++/* Smedia Glamo 336x/337x driver+ *+ * (C) 2007 by OpenMoko, Inc.+ * Author: Harald Welte <laforge@openmoko.org>+ * All rights reserved.+ *+ * This program is free software; you can redistribute it and/or+ * modify it under the terms of the GNU General Public License as+ * published by the Free Software Foundation; either version 2 of+ * the License, or (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ * MA 02111-1307 USA+ */++enum glamo_regster_offsets {+ GLAMO_REGOFS_GENERIC = 0x0000,+ GLAMO_REGOFS_HOSTBUS = 0x0200,+ GLAMO_REGOFS_MEMORY = 0x0300,+ GLAMO_REGOFS_VIDCAP = 0x0400,+ GLAMO_REGOFS_ISP = 0x0500,+ GLAMO_REGOFS_JPEG = 0x0800,+ GLAMO_REGOFS_MPEG = 0x0c00,+ GLAMO_REGOFS_LCD = 0x1100,+ GLAMO_REGOFS_MMC = 0x1400,+ GLAMO_REGOFS_MPROC0 = 0x1500,+ GLAMO_REGOFS_MPROC1 = 0x1580,+ GLAMO_REGOFS_CMDQUEUE = 0x1600,+ GLAMO_REGOFS_RISC = 0x1680,+ GLAMO_REGOFS_2D = 0x1700,+ GLAMO_REGOFS_3D = 0x1b00,+ GLAMO_REGOFS_END = 0x2400,+};+++enum glamo_register_generic {+ GLAMO_REG_GCONF1 = 0x0000,+ GLAMO_REG_GCONF2 = 0x0002,+#define GLAMO_REG_DEVICE_ID GLAMO_REG_GCONF2+ GLAMO_REG_GCONF3 = 0x0004,+#define GLAMO_REG_REVISION_ID GLAMO_REG_GCONF3+ GLAMO_REG_IRQ_GEN1 = 0x0006,+#define GLAMO_REG_IRQ_ENABLE GLAMO_REG_IRQ_GEN1+ GLAMO_REG_IRQ_GEN2 = 0x0008,+#define GLAMO_REG_IRQ_SET GLAMO_REG_IRQ_GEN2+ GLAMO_REG_IRQ_GEN3 = 0x000a,+#define GLAMO_REG_IRQ_CLEAR GLAMO_REG_IRQ_GEN3+ GLAMO_REG_IRQ_GEN4 = 0x000c,+#define GLAMO_REG_IRQ_STATUS GLAMO_REG_IRQ_GEN4+ GLAMO_REG_CLOCK_HOST = 0x0010,+ GLAMO_REG_CLOCK_MEMORY = 0x0012,+ GLAMO_REG_CLOCK_LCD = 0x0014,+ GLAMO_REG_CLOCK_MMC = 0x0016,+ GLAMO_REG_CLOCK_ISP = 0x0018,+ GLAMO_REG_CLOCK_JPEG = 0x001a,+ GLAMO_REG_CLOCK_3D = 0x001c,+ GLAMO_REG_CLOCK_2D = 0x001e,+ GLAMO_REG_CLOCK_RISC1 = 0x0020, /* 3365 only? */+ GLAMO_REG_CLOCK_RISC2 = 0x0022, /* 3365 only? */+ GLAMO_REG_CLOCK_MPEG = 0x0024,+ GLAMO_REG_CLOCK_MPROC = 0x0026,++ GLAMO_REG_CLOCK_GEN5_1 = 0x0030,+ GLAMO_REG_CLOCK_GEN5_2 = 0x0032,+ GLAMO_REG_CLOCK_GEN6 = 0x0034,+ GLAMO_REG_CLOCK_GEN7 = 0x0036,+ GLAMO_REG_CLOCK_GEN8 = 0x0038,+ GLAMO_REG_CLOCK_GEN9 = 0x003a,+ GLAMO_REG_CLOCK_GEN10 = 0x003c,+ GLAMO_REG_CLOCK_GEN11 = 0x003e,+ GLAMO_REG_PLL_GEN1 = 0x0040,+ GLAMO_REG_PLL_GEN2 = 0x0042,+ GLAMO_REG_PLL_GEN3 = 0x0044,+ GLAMO_REG_PLL_GEN4 = 0x0046,+ GLAMO_REG_PLL_GEN5 = 0x0048,+ GLAMO_REG_GPIO_GEN1 = 0x0050,+ GLAMO_REG_GPIO_GEN2 = 0x0052,+ GLAMO_REG_GPIO_GEN3 = 0x0054,+ GLAMO_REG_GPIO_GEN4 = 0x0056,+ GLAMO_REG_GPIO_GEN5 = 0x0058,+ GLAMO_REG_GPIO_GEN6 = 0x005a,+ GLAMO_REG_GPIO_GEN7 = 0x005c,+ GLAMO_REG_GPIO_GEN8 = 0x005e,+ GLAMO_REG_GPIO_GEN9 = 0x0060,+ GLAMO_REG_GPIO_GEN10 = 0x0062,+ GLAMO_REG_DFT_GEN1 = 0x0070,+ GLAMO_REG_DFT_GEN2 = 0x0072,+ GLAMO_REG_DFT_GEN3 = 0x0074,+ GLAMO_REG_DFT_GEN4 = 0x0076,++ GLAMO_REG_DFT_GEN5 = 0x01e0,+ GLAMO_REG_DFT_GEN6 = 0x01f0,+};++#define GLAMO_REG_HOSTBUS(x) (GLAMO_REGOFS_HOSTBUS-2+(x*2))++#define REG_MEM(x) (GLAMO_REGOFS_MEMORY+(x))+#define GLAMO_REG_MEM_TIMING(x) (GLAMO_REG_MEM_TIMING1-2+(x*2))++enum glamo_register_mem {+ GLAMO_REG_MEM_TYPE = REG_MEM(0x00),+ GLAMO_REG_MEM_GEN = REG_MEM(0x02),+ GLAMO_REG_MEM_TIMING1 = REG_MEM(0x04),+ GLAMO_REG_MEM_TIMING2 = REG_MEM(0x06),+ GLAMO_REG_MEM_TIMING3 = REG_MEM(0x08),+ GLAMO_REG_MEM_TIMING4 = REG_MEM(0x0a),+ GLAMO_REG_MEM_TIMING5 = REG_MEM(0x0c),+ GLAMO_REG_MEM_TIMING6 = REG_MEM(0x0e),+ GLAMO_REG_MEM_TIMING7 = REG_MEM(0x10),+ GLAMO_REG_MEM_TIMING8 = REG_MEM(0x12),+ GLAMO_REG_MEM_TIMING9 = REG_MEM(0x14),+ GLAMO_REG_MEM_TIMING10 = REG_MEM(0x16),+ GLAMO_REG_MEM_TIMING11 = REG_MEM(0x18),+ GLAMO_REG_MEM_POWER1 = REG_MEM(0x1a),+ GLAMO_REG_MEM_POWER2 = REG_MEM(0x1c),+ GLAMO_REG_MEM_LCD_BUF1 = REG_MEM(0x1e),+ GLAMO_REG_MEM_LCD_BUF2 = REG_MEM(0x20),+ GLAMO_REG_MEM_LCD_BUF3 = REG_MEM(0x22),+ GLAMO_REG_MEM_LCD_BUF4 = REG_MEM(0x24),+ GLAMO_REG_MEM_BIST1 = REG_MEM(0x26),+ GLAMO_REG_MEM_BIST2 = REG_MEM(0x28),+ GLAMO_REG_MEM_BIST3 = REG_MEM(0x2a),+ GLAMO_REG_MEM_BIST4 = REG_MEM(0x2c),+ GLAMO_REG_MEM_BIST5 = REG_MEM(0x2e),+ GLAMO_REG_MEM_MAH1 = REG_MEM(0x30),+ GLAMO_REG_MEM_MAH2 = REG_MEM(0x32),+ GLAMO_REG_MEM_DRAM1 = REG_MEM(0x34),+ GLAMO_REG_MEM_DRAM2 = REG_MEM(0x36),+ GLAMO_REG_MEM_CRC = REG_MEM(0x38),+};++#define GLAMO_MEM_TYPE_MASK 0x03++enum glamo_reg_mem_dram1 {+ GLAMO_MEM_DRAM1_EN_SDRAM_CLK = (1 << 11),+ GLAMO_MEM_DRAM1_SELF_REFRESH = (1 << 12),+};++enum glamo_reg_mem_dram2 {+ GLAMO_MEM_DRAM2_DEEP_PWRDOWN = (1 << 12),+};++enum glamo_irq_index {+ GLAMO_IRQIDX_HOSTBUS = 0,+ GLAMO_IRQIDX_JPEG = 1,+ GLAMO_IRQIDX_MPEG = 2,+ GLAMO_IRQIDX_MPROC1 = 3,+ GLAMO_IRQIDX_MPROC0 = 4,+ GLAMO_IRQIDX_CMDQUEUE = 5,+ GLAMO_IRQIDX_2D = 6,+ GLAMO_IRQIDX_MMC = 7,+ GLAMO_IRQIDX_RISC = 8,+};++enum glamo_irq {+ GLAMO_IRQ_HOSTBUS = (1 << GLAMO_IRQIDX_HOSTBUS),+ GLAMO_IRQ_JPEG = (1 << GLAMO_IRQIDX_JPEG),+ GLAMO_IRQ_MPEG = (1 << GLAMO_IRQIDX_MPEG),+ GLAMO_IRQ_MPROC1 = (1 << GLAMO_IRQIDX_MPROC1),+ GLAMO_IRQ_MPROC0 = (1 << GLAMO_IRQIDX_MPROC0),+ GLAMO_IRQ_CMDQUEUE = (1 << GLAMO_IRQIDX_CMDQUEUE),+ GLAMO_IRQ_2D = (1 << GLAMO_IRQIDX_2D),+ GLAMO_IRQ_MMC = (1 << GLAMO_IRQIDX_MMC),+ GLAMO_IRQ_RISC = (1 << GLAMO_IRQIDX_RISC),+};++enum glamo_reg_clock_host {+ GLAMO_CLOCK_HOST_DG_BCLK = 0x0001,+ GLAMO_CLOCK_HOST_DG_M0CLK = 0x0004,+ GLAMO_CLOCK_HOST_RESET = 0x1000,+};++enum glamo_reg_clock_mem {+ GLAMO_CLOCK_MEM_DG_M1CLK = 0x0001,+ GLAMO_CLOCK_MEM_EN_M1CLK = 0x0002,+ GLAMO_CLOCK_MEM_DG_MOCACLK = 0x0004,+ GLAMO_CLOCK_MEM_EN_MOCACLK = 0x0008,+ GLAMO_CLOCK_MEM_RESET = 0x1000,+ GLAMO_CLOCK_MOCA_RESET = 0x2000,+};++enum glamo_reg_clock_lcd {+ GLAMO_CLOCK_LCD_DG_DCLK = 0x0001,+ GLAMO_CLOCK_LCD_EN_DCLK = 0x0002,+ GLAMO_CLOCK_LCD_DG_DMCLK = 0x0004,+ GLAMO_CLOCK_LCD_EN_DMCLK = 0x0008,+ //+ GLAMO_CLOCK_LCD_EN_DHCLK = 0x0020,+ GLAMO_CLOCK_LCD_DG_M5CLK = 0x0040,+ GLAMO_CLOCK_LCD_EN_M5CLK = 0x0080,+ GLAMO_CLOCK_LCD_RESET = 0x1000,+};++enum glamo_reg_clock_mmc {+ GLAMO_CLOCK_MMC_DG_TCLK = 0x0001,+ GLAMO_CLOCK_MMC_EN_TCLK = 0x0002,+ GLAMO_CLOCK_MMC_DG_M9CLK = 0x0004,+ GLAMO_CLOCK_MMC_EN_M9CLK = 0x0008,+ GLAMO_CLOCK_MMC_RESET = 0x1000,+};++enum glamo_reg_basic_mmc {+ /* set to disable CRC error rejection */+ GLAMO_BASIC_MMC_DISABLE_CRC = 0x0001,+ /* enable completion interrupt */+ GLAMO_BASIC_MMC_EN_COMPL_INT = 0x0002,+ /* stop MMC clock while enforced idle waiting for data from card */+ GLAMO_BASIC_MMC_NO_CLK_RD_WAIT = 0x0004,+ /* 0 = 1-bit bus to card, 1 = use 4-bit bus (has to be negotiated) */+ GLAMO_BASIC_MMC_EN_4BIT_DATA = 0x0008,+ /* enable 75K pullups on D3..D0 */+ GLAMO_BASIC_MMC_EN_DATA_PUPS = 0x0010,+ /* enable 75K pullup on CMD */+ GLAMO_BASIC_MMC_EN_CMD_PUP = 0x0020,+ /* IO drive strength 00=weak -> 11=strongest */+ GLAMO_BASIC_MMC_EN_DR_STR0 = 0x0040,+ GLAMO_BASIC_MMC_EN_DR_STR1 = 0x0080,+ /* TCLK delay stage A, 0000 = 500ps --> 1111 = 8ns */+ GLAMO_BASIC_MMC_EN_TCLK_DLYA0 = 0x0100,+ GLAMO_BASIC_MMC_EN_TCLK_DLYA1 = 0x0200,+ GLAMO_BASIC_MMC_EN_TCLK_DLYA2 = 0x0400,+ GLAMO_BASIC_MMC_EN_TCLK_DLYA3 = 0x0800,+ /* TCLK delay stage B (cumulative), 0000 = 500ps --> 1111 = 8ns */+ GLAMO_BASIC_MMC_EN_TCLK_DLYB0 = 0x1000,+ GLAMO_BASIC_MMC_EN_TCLK_DLYB1 = 0x2000,+ GLAMO_BASIC_MMC_EN_TCLK_DLYB2 = 0x4000,+ GLAMO_BASIC_MMC_EN_TCLK_DLYB3 = 0x8000,+};++enum glamo_reg_stat1_mmc {+ /* command "counter" (really: toggle) */+ GLAMO_STAT1_MMC_CMD_CTR = 0x8000,+ /* engine is idle */+ GLAMO_STAT1_MMC_IDLE = 0x4000,+ /* readback response is ready */+ GLAMO_STAT1_MMC_RB_RRDY = 0x0200,+ /* readback data is ready */+ GLAMO_STAT1_MMC_RB_DRDY = 0x0100,+ /* no response timeout */+ GLAMO_STAT1_MMC_RTOUT = 0x0020,+ /* no data timeout */+ GLAMO_STAT1_MMC_DTOUT = 0x0010,+ /* CRC error on block write */+ GLAMO_STAT1_MMC_BWERR = 0x0004,+ /* CRC error on block read */+ GLAMO_STAT1_MMC_BRERR = 0x0002+};++enum glamo_reg_fire_mmc {+ /* command "counter" (really: toggle)+ * the STAT1 register reflects this so you can ensure you don't look+ * at status for previous command+ */+ GLAMO_FIRE_MMC_CMD_CTR = 0x8000,+ /* sets kind of response expected */+ GLAMO_FIRE_MMC_RES_MASK = 0x0700,+ /* sets command type */+ GLAMO_FIRE_MMC_TYP_MASK = 0x00C0,+ /* sets command class */+ GLAMO_FIRE_MMC_CLS_MASK = 0x000F,+};++enum glamo_fire_mmc_response_types {+ GLAMO_FIRE_MMC_RSPT_R1 = 0x0000,+ GLAMO_FIRE_MMC_RSPT_R1b = 0x0100,+ GLAMO_FIRE_MMC_RSPT_R2 = 0x0200,+ GLAMO_FIRE_MMC_RSPT_R3 = 0x0300,+ GLAMO_FIRE_MMC_RSPT_R4 = 0x0400,+ GLAMO_FIRE_MMC_RSPT_R5 = 0x0500,+};++enum glamo_fire_mmc_command_types {+ /* broadcast, no response */+ GLAMO_FIRE_MMC_CMDT_BNR = 0x0000,+ /* broadcast, with response */+ GLAMO_FIRE_MMC_CMDT_BR = 0x0040,+ /* addressed, no data */+ GLAMO_FIRE_MMC_CMDT_AND = 0x0080,+ /* addressed, with data */+ GLAMO_FIRE_MMC_CMDT_AD = 0x00C0,+};++enum glamo_fire_mmc_command_class {+ /* "Stream Read" */+ GLAMO_FIRE_MMC_CC_STRR = 0x0000,+ /* Single Block Read */+ GLAMO_FIRE_MMC_CC_SBR = 0x0001,+ /* Multiple Block Read With Stop */+ GLAMO_FIRE_MMC_CC_MBRS = 0x0002,+ /* Multiple Block Read No Stop */+ GLAMO_FIRE_MMC_CC_MBRNS = 0x0003,+ /* RESERVED for "Stream Write" */+ GLAMO_FIRE_MMC_CC_STRW = 0x0004,+ /* "Stream Write" */+ GLAMO_FIRE_MMC_CC_SBW = 0x0005,+ /* RESERVED for Multiple Block Write With Stop */+ GLAMO_FIRE_MMC_CC_MBWS = 0x0006,+ /* Multiple Block Write No Stop */+ GLAMO_FIRE_MMC_CC_MBWNS = 0x0007,+ /* STOP command */+ GLAMO_FIRE_MMC_CC_STOP = 0x0008,+ /* Cancel on Running Command */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -