⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 off.c

📁 6410BSP1
💻 C
📖 第 1 页 / 共 3 页
字号:
    pGPIOReg->GPECON = *pBuffer++;        // 080
    pGPIOReg->GPEDAT = *pBuffer++;        // 084
    pGPIOReg->GPEPUD = *pBuffer++;        // 088
    //GPECONSLP;                        // 08c
    //GPEPUDSLP;                        // 090

    // GPIO F
    pGPIOReg->GPFCON = *pBuffer++;        // 0a0
    pGPIOReg->GPFDAT = *pBuffer++;        // 0a4
    pGPIOReg->GPFPUD = *pBuffer++;        // 0a8
    //GPFCONSLP;                        // 0ac
    //GPFPUDSLP;                        // 0b0

    // GPIO G
    pGPIOReg->GPGCON = *pBuffer++;        // 0c0
    pGPIOReg->GPGDAT = *pBuffer++;        // 0c4
    pGPIOReg->GPGPUD = *pBuffer++;        // 0c8
    //GPGCONSLP;                        // 0cc
    //GPGPUDSLP;                        // 0d0

    // GPIO H
    pGPIOReg->GPHCON0 = *pBuffer++;    // 0e0
    pGPIOReg->GPHCON1 = *pBuffer++;    // 0e4
    pGPIOReg->GPHDAT = *pBuffer++;        // 0e8
    pGPIOReg->GPHPUD = *pBuffer++;        // 0ec
    //GPHCONSLP;                        // 0f0
    //GPHPUDSLP;                        // 0f4

    // GPIO I
    pGPIOReg->GPICON = *pBuffer++;        // 100
    pGPIOReg->GPIDAT = *pBuffer++;        // 104
    pGPIOReg->GPIPUD = *pBuffer++;        // 108
    //GPICONSLP;                        // 10c
    //GPIPUDSLP;                        // 110

    // GPIO J
    pGPIOReg->GPJCON = *pBuffer++;        // 120
    pGPIOReg->GPJDAT = *pBuffer++;        // 124
    pGPIOReg->GPJPUD = *pBuffer++;        // 128
    //GPJCONSLP;                        // 12c
    //GPJPUDSLP;                        // 130

    // GPIO K
    pGPIOReg->GPKCON0 = *pBuffer++;    // 800
    pGPIOReg->GPKCON1 = *pBuffer++;    // 804
    pGPIOReg->GPKDAT = *pBuffer++;        // 808
    pGPIOReg->GPKPUD = *pBuffer++;        // 80c

    // GPIO L
    pGPIOReg->GPLCON0 = *pBuffer++;    // 810
    pGPIOReg->GPLCON1 = *pBuffer++;    // 814
    pGPIOReg->GPLDAT = *pBuffer++;        // 818
    pGPIOReg->GPLPUD = *pBuffer++;        // 81c

    // GPIO M
    pGPIOReg->GPMCON = *pBuffer++;        // 820
    pGPIOReg->GPMDAT = *pBuffer++;        // 824
    pGPIOReg->GPMPUD = *pBuffer++;        // 828

    // GPIO N
    pGPIOReg->GPNCON = *pBuffer++;        // 830
    pGPIOReg->GPNDAT = *pBuffer++;        // 834
    pGPIOReg->GPNPUD = *pBuffer++;        // 838

    // GPIO O
    pGPIOReg->GPOCON = *pBuffer++;        // 140
    pGPIOReg->GPODAT = *pBuffer++;        // 144
    pGPIOReg->GPOPUD = *pBuffer++;        // 148
    //GPOCONSLP;                        // 14c
    //GPOPUDSLP;                        // 150

    // GPIO P
    pGPIOReg->GPPCON = *pBuffer++;        // 160
    pGPIOReg->GPPDAT = *pBuffer++;        // 164
    pGPIOReg->GPPPUD = *pBuffer++;        // 168
    //GPPCONSLP;                        // 16c
    //GPPPUDSLP;                        // 170

    // GPIO Q
    pGPIOReg->GPQCON = *pBuffer++;        // 180
    pGPIOReg->GPQDAT = *pBuffer++;        // 184
    pGPIOReg->GPQPUD = *pBuffer++;        // 188
    //GPQCONSLP;                        // 18c
    //GPQPUDSLP;                        // 190

    // Special Port Control
    pGPIOReg->SPCON = *pBuffer++;            // 1a0
    //SPCONSLP;                                // 880    // Configure for Sleep Mode

    // Memory Port Control
    pGPIOReg->MEM0CONSTOP = *pBuffer++;    // 1b0
    pGPIOReg->MEM1CONSTOP = *pBuffer++;    // 1b4

    pGPIOReg->MEM0CONSLP0 = *pBuffer++;    // 1c0
    pGPIOReg->MEM0CONSLP1 = *pBuffer++;    // 1c4
    pGPIOReg->MEM1CONSLP = *pBuffer++;        // 1c8

    pGPIOReg->MEM0DRVCON = *pBuffer++;    // 1d0
    pGPIOReg->MEM1DRVCON = *pBuffer++;    // 1d4

    // External Interrupt
    pGPIOReg->EINT12CON = *pBuffer++;        // 200
    pGPIOReg->EINT34CON = *pBuffer++;        // 204
    pGPIOReg->EINT56CON = *pBuffer++;        // 208
    pGPIOReg->EINT78CON = *pBuffer++;        // 20c
    pGPIOReg->EINT9CON = *pBuffer++;        // 210

    pGPIOReg->EINT12FLTCON = *pBuffer++;    // 220
    pGPIOReg->EINT34FLTCON = *pBuffer++;    // 224
    pGPIOReg->EINT56FLTCON = *pBuffer++;    // 228
    pGPIOReg->EINT78FLTCON = *pBuffer++;    // 22c
    pGPIOReg->EINT9FLTCON = *pBuffer++;        // 230

    pGPIOReg->EINT12MASK = *pBuffer++;        // 240
    pGPIOReg->EINT34MASK = *pBuffer++;        // 244
    pGPIOReg->EINT56MASK = *pBuffer++;        // 248
    pGPIOReg->EINT78MASK = *pBuffer++;        // 24c
    pGPIOReg->EINT9MASK = *pBuffer++;        // 250

    //EINT12PEND;                            // 260    // Do not Save Pending Bit
    //EINT34PEND;                            // 264
    //EINT56PEND;                            // 268
    //EINT78PEND;                            // 26c
    //EINT9PEND;                            // 270

    pGPIOReg->PRIORITY = *pBuffer++;        // 280
    //SERVICE;                                // 284    // Do not Save Read Only Register (But Check before enter sleep...)
    //SERVICEPEND;                            // 288    // Do not Save Pending Bit

    // External Interrupt Group 0
    pGPIOReg->EINT0CON0 = *pBuffer++;        // 900
    pGPIOReg->EINT0CON1 = *pBuffer++;        // 904

    pGPIOReg->EINT0FLTCON0 = *pBuffer++;    // 910
    pGPIOReg->EINT0FLTCON1 = *pBuffer++;    // 914
    pGPIOReg->EINT0FLTCON2 = *pBuffer++;    // 918
    pGPIOReg->EINT0FLTCON3 = *pBuffer++;    // 91c

    pGPIOReg->EINT0MASK = *pBuffer++;        // 920
    //EINT0PEND;                            // 924    // Do not Save Pending Bit

    // Sleep Mode Pad Configure Register
    //SLPEN;                                    // 930    // Configure for Sleep Mode

}

static void S3C6410_SaveState_SysCon(void *pSysCon, UINT32 *pBuffer)
{
    volatile S3C6410_SYSCON_REG *pSysConReg;

    pSysConReg = (S3C6410_SYSCON_REG *)pSysCon;

    //APLL_LOCK;        // Reconfiguration
    //MPLL_LOCK;        // Reconfiguration
    //EPLL_LOCK;        // Reconfiguration
    //APLL_CON;            // Reconfiguration
    //MPLL_CON;            // Reconfiguration
    //EPLL_CON0;        // Reconfiguration
    //EPLL_CON1;        // Reconfiguration

    *pBuffer++ = pSysConReg->CLK_SRC;
    *pBuffer++ = pSysConReg->CLK_DIV0;
    *pBuffer++ = pSysConReg->CLK_DIV1;
    *pBuffer++ = pSysConReg->CLK_DIV2;
    *pBuffer++ = pSysConReg->CLK_OUT;

    *pBuffer++ = pSysConReg->HCLK_GATE;
    *pBuffer++ = pSysConReg->PCLK_GATE;
    *pBuffer++ = pSysConReg->SCLK_GATE;

    *pBuffer++ = pSysConReg->AHB_CON0;
    *pBuffer++ = pSysConReg->AHB_CON1;
    *pBuffer++ = pSysConReg->AHB_CON2;
    *pBuffer++ = pSysConReg->SDMA_SEL;

    //SW_RST;            // Reset Trigger
    //SYS_ID;            // Read Only

    *pBuffer++ = pSysConReg->MEM_SYS_CFG;
    *pBuffer++ = pSysConReg->QOS_OVERRIDE0;
    *pBuffer++ = pSysConReg->QOS_OVERRIDE1;
    //MEM_CFG_STAT;    // Read Only

    //PWR_CFG;            // Retension
    //EINT_MASK;        // Retension
    *pBuffer++ = pSysConReg->NORMAL_CFG;    // Retension, But H/W Problem
    //STOP_CFG;            // Retension
    //SLEEP_CFG;        // Retension

    //OSC_FREQ;            // Retension
    //OSC_STABLE;        // Retension
    //PWR_STABLE;        // Retension
    //FPC_STABLE;        // Retension
    //MTC_STABLE;        // Retension

    //OTHERS;            // Retension
    //RST_STAT;            // Retension, Read Only
    //WAKEUP_STAT;        // Retension
    //BLK_PWR_STAT;        // Retension, Read Only

    //INFORM0;            // Retension
    //INFORM1;            // Retension
    //INFORM2;            // Retension
    //INFORM3;            // Retension
    //INFORM4;            // Retension
    //INFORM5;            // Retension
    //INFORM6;            // Retension
    //INFORM7;            // Retension
}

static void S3C6410_RestoreState_SysCon(void *pSysCon, UINT32 *pBuffer)
{
    volatile S3C6410_SYSCON_REG *pSysConReg;

    pSysConReg = (S3C6410_SYSCON_REG *)pSysCon;
    //APLL_LOCK;        // Reconfiguration
    //MPLL_LOCK;        // Reconfiguration
    //EPLL_LOCK;        // Reconfiguration
    //APLL_CON;            // Reconfiguration
    //MPLL_CON;            // Reconfiguration
    //EPLL_CON0;        // Reconfiguration
    //EPLL_CON1;        // Reconfiguration

    pSysConReg->CLK_SRC = *pBuffer++;
    pSysConReg->CLK_DIV0 = *pBuffer++;
    pSysConReg->CLK_DIV1 = *pBuffer++;
    pSysConReg->CLK_DIV2 = *pBuffer++;
    pSysConReg->CLK_OUT = *pBuffer++;

    pSysConReg->HCLK_GATE = *pBuffer++;
    pSysConReg->PCLK_GATE = *pBuffer++;
    pSysConReg->SCLK_GATE = *pBuffer++;

    pSysConReg->AHB_CON0 = *pBuffer++;
    pSysConReg->AHB_CON1 = *pBuffer++;
    pSysConReg->AHB_CON2 = *pBuffer++;
    pSysConReg->SDMA_SEL = *pBuffer++;

    //SW_RST;            // Reset Trigger
    //SYS_ID;            // Read Only

    pSysConReg->MEM_SYS_CFG = *pBuffer++;
    pSysConReg->QOS_OVERRIDE0 = *pBuffer++;
    pSysConReg->QOS_OVERRIDE1 = *pBuffer++;
    //MEM_CFG_STAT;    // Read Only

    //PWR_CFG;            // Retension
    //EINT_MASK;        // Retension
    pSysConReg->NORMAL_CFG = *pBuffer++;    // Retension, But H/W Problem
    //STOP_CFG;            // Retension
    //SLEEP_CFG;        // Retension

    //OSC_FREQ;            // Retension
    //OSC_STABLE;        // Retension
    //PWR_STABLE;        // Retension
    //FPC_STABLE;        // Retension
    //MTC_STABLE;        // Retension

    //OTHERS;            // Retension
    //RST_STAT;            // Retension, Read Only
    //WAKEUP_STAT;        // Retension
    //BLK_PWR_STAT;        // Retension, Read Only

    //INFORM0;            // Retension
    //INFORM1;            // Retension
    //INFORM2;            // Retension
    //INFORM3;            // Retension
    //INFORM4;            // Retension
    //INFORM5;            // Retension
    //INFORM6;            // Retension
    //INFORM7;            // Retension
}

static void S3C6410_SaveState_DMACon(void *pDMAC, UINT32 *pBuffer)
{
    volatile S3C6410_DMAC_REG *pDMACReg;

    pDMACReg = (S3C6410_DMAC_REG *)pDMAC;

    //DMACIntStatus;            // Read-Only
    //DMACIntTCStatus;        // Read-Only
    //DMACIntTCClear;        // Clear Register
    //DMACIntErrStatus;        // Read-Only
    //DMACIntErrClear;        // Clear Register
    //DMACRawIntTCStatus;    // Read-Only
    //DMACRawIntErrStatus;    // Read-Only
    //DMACEnbldChns;        // Read-Only

    //DMACSoftBReq;            // No use
    //DMACSoftSReq;            // No use
    //DMACSoftLBReq;        // No use
    //DMACSoftLSReq;        // No use

    *pBuffer++ = pDMACReg->DMACConfiguration;
    *pBuffer++ = pDMACReg->DMACSync;

    *pBuffer++ = pDMACReg->DMACC0SrcAddr;
    *pBuffer++ = pDMACReg->DMACC0DestAddr;
    *pBuffer++ = pDMACReg->DMACC0LLI;
    *pBuffer++ = pDMACReg->DMACC0Control0;
    *pBuffer++ = pDMACReg->DMACC0Control1;
    *pBuffer++ = pDMACReg->DMACC0Configuration;

    *pBuffer++ = pDMACReg->DMACC1SrcAddr;
    *pBuffer++ = pDMACReg->DMACC1DestAddr;
    *pBuffer++ = pDMACReg->DMACC1LLI;
    *pBuffer++ = pDMACReg->DMACC1Control0;
    *pBuffer++ = pDMACReg->DMACC1Control1;
    *pBuffer++ = pDMACReg->DMACC1Configuration;

    *pBuffer++ = pDMACReg->DMACC2SrcAddr;
    *pBuffer++ = pDMACReg->DMACC2DestAddr;
    *pBuffer++ = pDMACReg->DMACC2LLI;
    *pBuffer++ = pDMACReg->DMACC2Control0;
    *pBuffer++ = pDMACReg->DMACC2Control1;
    *pBuffer++ = pDMACReg->DMACC2Configuration;

    *pBuffer++ = pDMACReg->DMACC3SrcAddr;
    *pBuffer++ = pDMACReg->DMACC3DestAddr;
    *pBuffer++ = pDMACReg->DMACC3LLI;
    *pBuffer++ = pDMACReg->DMACC3Control0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -