/* 
 | 
 * Copyright (C) 2008-2013 Eric Jarrige <eric.jarrige@armadeus.org> 
 | 
 * 
 | 
 * SPDX-License-Identifier:    GPL-2.0+ 
 | 
 */ 
 | 
  
 | 
#ifndef __APF27_H 
 | 
#define __APF27_H 
 | 
  
 | 
/* FPGA program pin configuration */ 
 | 
#define ACFG_FPGA_PWR    (GPIO_PORTF | 19)    /* FPGA prog pin  */ 
 | 
#define ACFG_FPGA_PRG    (GPIO_PORTF | 11)    /* FPGA prog pin  */ 
 | 
#define ACFG_FPGA_CLK    (GPIO_PORTF | 15)    /* FPGA clk pin   */ 
 | 
#define ACFG_FPGA_RDATA    0xD6000000        /* FPGA data addr */ 
 | 
#define ACFG_FPGA_WDATA    0xD6000000        /* FPGA data addr */ 
 | 
#define ACFG_FPGA_INIT    (GPIO_PORTF | 12)    /* FPGA init pin  */ 
 | 
#define ACFG_FPGA_DONE    (GPIO_PORTF | 9)    /* FPGA done pin  */ 
 | 
#define ACFG_FPGA_RW    (GPIO_PORTF | 21)    /* FPGA done pin  */ 
 | 
#define ACFG_FPGA_CS    (GPIO_PORTF | 22)    /* FPGA done pin  */ 
 | 
#define ACFG_FPGA_SUSPEND (GPIO_PORTF | 10)    /* FPGA done pin  */ 
 | 
#define ACFG_FPGA_RESET    (GPIO_PORTF | 7)    /* FPGA done pin  */ 
 | 
  
 | 
/* MMC pin */ 
 | 
#define PC_PWRON    (GPIO_PORTF | 16) 
 | 
  
 | 
/* 
 | 
 * MPU CLOCK source before PLL 
 | 
 * ACFG_CLK_FREQ (2/3 MPLL clock or ext 266 MHZ) 
 | 
 */ 
 | 
#define ACFG_MPCTL0_VAL        0x01EF15D5    /* 399.000 MHz */ 
 | 
#define ACFG_MPCTL1_VAL        0 
 | 
#define CONFIG_MPLL_FREQ    399 
 | 
  
 | 
#define ACFG_CLK_FREQ    (CONFIG_MPLL_FREQ*2/3) /* 266 MHz */ 
 | 
  
 | 
/* Serial clock source before PLL (should be named ACFG_SYSPLL_CLK_FREQ)*/ 
 | 
#define ACFG_SPCTL0_VAL        0x0475206F    /* 299.99937 MHz */ 
 | 
#define ACFG_SPCTL1_VAL        0 
 | 
#define CONFIG_SPLL_FREQ    300        /* MHz */ 
 | 
  
 | 
/* ARM bus frequency (have to be a CONFIG_MPLL_FREQ ratio) */ 
 | 
#define CONFIG_ARM_FREQ        399    /* up to 400 MHz */ 
 | 
  
 | 
/* external bus frequency (have to be a ACFG_CLK_FREQ ratio) */ 
 | 
#define CONFIG_HCLK_FREQ    133    /* (ACFG_CLK_FREQ/2) */ 
 | 
  
 | 
#define CONFIG_PERIF1_FREQ    16    /* 16.625 MHz UART, GPT, PWM */ 
 | 
#define CONFIG_PERIF2_FREQ    33    /* 33.25 MHz CSPI and SDHC */ 
 | 
#define CONFIG_PERIF3_FREQ    33    /* 33.25 MHz LCD */ 
 | 
#define CONFIG_PERIF4_FREQ    33    /* 33.25 MHz CSI */ 
 | 
#define CONFIG_SSI1_FREQ    66    /* 66.50 MHz SSI1 */ 
 | 
#define CONFIG_SSI2_FREQ    66    /* 66.50 MHz SSI2 */ 
 | 
#define CONFIG_MSHC_FREQ    66    /* 66.50 MHz MSHC */ 
 | 
#define CONFIG_H264_FREQ    66    /* 66.50 MHz H264 */ 
 | 
#define CONFIG_CLK0_DIV        3    /* Divide CLK0 by 4 */ 
 | 
#define CONFIG_CLK0_EN        1    /* CLK0 enabled */ 
 | 
  
 | 
/* external bus frequency (have to be a CONFIG_HCLK_FREQ ratio) */ 
 | 
#define CONFIG_NFC_FREQ        44    /* NFC Clock up to 44 MHz wh 133MHz */ 
 | 
  
 | 
/* external serial bus frequency (have to be a CONFIG_SPLL_FREQ ratio) */ 
 | 
#define CONFIG_USB_FREQ        60    /* 60 MHz */ 
 | 
  
 | 
/* 
 | 
 * SDRAM 
 | 
 */ 
 | 
#if (ACFG_SDRAM_MBYTE_SYZE == 64) /* micron MT46H16M32LF -6 */ 
 | 
/* micron 64MB */ 
 | 
#define ACFG_SDRAM_NUM_COL        9  /* 8, 9, 10 or 11 
 | 
                        * column address bits 
 | 
                        */ 
 | 
#define ACFG_SDRAM_NUM_ROW        13 /* 11, 12 or 13 
 | 
                        * row address bits 
 | 
                        */ 
 | 
#define ACFG_SDRAM_REFRESH        3  /* 0=OFF 1=2048 
 | 
                        * 2=4096 3=8192 refresh 
 | 
                        */ 
 | 
#define ACFG_SDRAM_EXIT_PWD        25 /* ns exit power 
 | 
                        * down delay 
 | 
                        */ 
 | 
#define ACFG_SDRAM_W2R_DELAY        1  /* write to read 
 | 
                        * cycle delay > 0 
 | 
                        */ 
 | 
#define ACFG_SDRAM_ROW_PRECHARGE_DELAY    18 /* ns */ 
 | 
#define ACFG_SDRAM_TMRD_DELAY        2  /* Load mode register 
 | 
                        * cycle delay 1..4 
 | 
                        */ 
 | 
#define ACFG_SDRAM_TWR_DELAY        1  /* LPDDR: 0=2ck 1=3ck 
 | 
                        * SDRAM: 0=1ck 1=2ck 
 | 
                        */ 
 | 
#define ACFG_SDRAM_RAS_DELAY        42 /* ns ACTIVE-to-PRECHARGE delay */ 
 | 
#define ACFG_SDRAM_RRD_DELAY        12 /* ns ACTIVE-to-ACTIVE delay */ 
 | 
#define ACFG_SDRAM_RCD_DELAY        18 /* ns Row to Column delay */ 
 | 
#define ACFG_SDRAM_RC_DELAY        70 /* ns Row cycle delay (tRFC 
 | 
                        * refresh to command) 
 | 
                        */ 
 | 
#define ACFG_SDRAM_CLOCK_CYCLE_CL_1    0 /* ns clock cycle time 
 | 
                       * estimated fo CL=1 
 | 
                       * 0=force 3 for lpddr 
 | 
                       */ 
 | 
#define ACFG_SDRAM_PARTIAL_ARRAY_SR    0  /* 0=full 1=half 2=quater 
 | 
                        * 3=Eighth 4=Sixteenth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_DRIVE_STRENGH    0  /* 0=Full-strength 1=half 
 | 
                        * 2=quater 3=Eighth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_BURST_LENGTH        3  /* 2^N BYTES (N=0..3) */ 
 | 
#define ACFG_SDRAM_SINGLE_ACCESS    0  /* 1= single access 
 | 
                        * 0 = Burst mode 
 | 
                        */ 
 | 
#endif 
 | 
  
 | 
#if (ACFG_SDRAM_MBYTE_SYZE == 128) 
 | 
/* micron 128MB */ 
 | 
#define ACFG_SDRAM_NUM_COL        9  /* 8, 9, 10 or 11 
 | 
                        * column address bits 
 | 
                        */ 
 | 
#define ACFG_SDRAM_NUM_ROW        14 /* 11, 12 or 13 
 | 
                        * row address bits 
 | 
                        */ 
 | 
#define ACFG_SDRAM_REFRESH        3  /* 0=OFF 1=2048 
 | 
                        * 2=4096 3=8192 refresh 
 | 
                        */ 
 | 
#define ACFG_SDRAM_EXIT_PWD        25 /* ns exit power 
 | 
                        * down delay 
 | 
                        */ 
 | 
#define ACFG_SDRAM_W2R_DELAY        1  /* write to read 
 | 
                        * cycle delay > 0 
 | 
                        */ 
 | 
#define ACFG_SDRAM_ROW_PRECHARGE_DELAY    18 /* ns */ 
 | 
#define ACFG_SDRAM_TMRD_DELAY        2  /* Load mode register 
 | 
                        * cycle delay 1..4 
 | 
                        */ 
 | 
#define ACFG_SDRAM_TWR_DELAY        1  /* LPDDR: 0=2ck 1=3ck 
 | 
                        * SDRAM: 0=1ck 1=2ck 
 | 
                        */ 
 | 
#define ACFG_SDRAM_RAS_DELAY        42 /* ns ACTIVE-to-PRECHARGE delay */ 
 | 
#define ACFG_SDRAM_RRD_DELAY        12 /* ns ACTIVE-to-ACTIVE delay */ 
 | 
#define ACFG_SDRAM_RCD_DELAY        18 /* ns Row to Column delay */ 
 | 
#define ACFG_SDRAM_RC_DELAY        70 /* ns Row cycle delay (tRFC 
 | 
                        * refresh to command) 
 | 
                        */ 
 | 
#define ACFG_SDRAM_CLOCK_CYCLE_CL_1    0 /* ns clock cycle time 
 | 
                       * estimated fo CL=1 
 | 
                       * 0=force 3 for lpddr 
 | 
                       */ 
 | 
#define ACFG_SDRAM_PARTIAL_ARRAY_SR    0  /* 0=full 1=half 2=quater 
 | 
                        * 3=Eighth 4=Sixteenth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_DRIVE_STRENGH    0  /* 0=Full-strength 1=half 
 | 
                        * 2=quater 3=Eighth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_BURST_LENGTH        3  /* 2^N BYTES (N=0..3) */ 
 | 
#define ACFG_SDRAM_SINGLE_ACCESS    0  /* 1= single access 
 | 
                        * 0 = Burst mode 
 | 
                        */ 
 | 
#endif 
 | 
  
 | 
#if (ACFG_SDRAM_MBYTE_SYZE == 256) 
 | 
/* micron 256MB */ 
 | 
#define ACFG_SDRAM_NUM_COL        10  /* 8, 9, 10 or 11 
 | 
                         * column address bits 
 | 
                         */ 
 | 
#define ACFG_SDRAM_NUM_ROW        14 /* 11, 12 or 13 
 | 
                        * row address bits 
 | 
                        */ 
 | 
#define ACFG_SDRAM_REFRESH        3  /* 0=OFF 1=2048 
 | 
                        * 2=4096 3=8192 refresh 
 | 
                        */ 
 | 
#define ACFG_SDRAM_EXIT_PWD        25 /* ns exit power 
 | 
                        * down delay 
 | 
                        */ 
 | 
#define ACFG_SDRAM_W2R_DELAY        1  /* write to read cycle 
 | 
                        * delay > 0 
 | 
                        */ 
 | 
#define ACFG_SDRAM_ROW_PRECHARGE_DELAY    18 /* ns */ 
 | 
#define ACFG_SDRAM_TMRD_DELAY        2  /* Load mode register 
 | 
                        * cycle delay 1..4 
 | 
                        */ 
 | 
#define ACFG_SDRAM_TWR_DELAY        1  /* LPDDR: 0=2ck 1=3ck 
 | 
                        * SDRAM: 0=1ck 1=2ck 
 | 
                        */ 
 | 
#define ACFG_SDRAM_RAS_DELAY        42 /* ns ACTIVE-to-PRECHARGE delay */ 
 | 
#define ACFG_SDRAM_RRD_DELAY        12 /* ns ACTIVE-to-ACTIVE delay */ 
 | 
#define ACFG_SDRAM_RCD_DELAY        18 /* ns Row to Column delay */ 
 | 
#define ACFG_SDRAM_RC_DELAY        70 /* ns Row cycle delay (tRFC 
 | 
                        * refresh to command) 
 | 
                        */ 
 | 
#define ACFG_SDRAM_CLOCK_CYCLE_CL_1    0 /* ns clock cycle time 
 | 
                       * estimated fo CL=1 
 | 
                       * 0=force 3 for lpddr 
 | 
                       */ 
 | 
#define ACFG_SDRAM_PARTIAL_ARRAY_SR    0  /* 0=full 1=half 2=quater 
 | 
                        * 3=Eighth 4=Sixteenth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_DRIVE_STRENGH    0  /* 0=Full-strength 
 | 
                        * 1=half 
 | 
                        * 2=quater 
 | 
                        * 3=Eighth 
 | 
                        */ 
 | 
#define ACFG_SDRAM_BURST_LENGTH        3  /* 2^N BYTES (N=0..3) */ 
 | 
#define ACFG_SDRAM_SINGLE_ACCESS    0  /* 1= single access 
 | 
                        * 0 = Burst mode 
 | 
                        */ 
 | 
#endif 
 | 
  
 | 
/* 
 | 
 * External interface 
 | 
 */ 
 | 
/* 
 | 
 * CSCRxU_VAL: 
 | 
 * 31| x | x | x x |x x x x| x x | x | x  |x x x x|16 
 | 
 *   |SP |WP | BCD |  BCS  | PSZ |PME|SYNC|  DOL  | 
 | 
 * 
 | 
 * 15| x x  | x x x x x x | x | x x x x | x x x x |0 
 | 
 *   | CNC  |     WSC     |EW |   WWS   |   EDC   | 
 | 
 * 
 | 
 * CSCRxL_VAL: 
 | 
 * 31|  x x x x  | x x x x  | x x x x  | x x x x  |16 
 | 
 *   |    OEA    |   OEN    |   EBWA   |   EBWN   | 
 | 
 * 15|x x x x| x |x x x |x x x x| x | x | x  | x  | 0 
 | 
 *   |  CSA  |EBC| DSZ  |  CSN  |PSR|CRE|WRAP|CSEN| 
 | 
 * 
 | 
 * CSCRxA_VAL: 
 | 
 * 31|  x x x x  | x x x x  | x x x x  | x x x x  |16 
 | 
 *   |   EBRA    |   EBRN   |   RWA    |   RWN    | 
 | 
 * 15| x | x x |x x x|x x|x x|x x| x | x | x  | x | 0 
 | 
 *   |MUM| LAH | LBN |LBA|DWW|DCT|WWU|AGE|CNC2|FCE| 
 | 
 */ 
 | 
  
 | 
/* CS0 configuration for 16 bit nor flash */ 
 | 
#define ACFG_CS0U_VAL    0x0000CC03 
 | 
#define ACFG_CS0L_VAL    0xa0330D01 
 | 
#define ACFG_CS0A_VAL    0x00220800 
 | 
  
 | 
#define ACFG_CS1U_VAL    0x00000f00 
 | 
#define ACFG_CS1L_VAL    0x00000D01 
 | 
#define ACFG_CS1A_VAL    0 
 | 
  
 | 
#define ACFG_CS2U_VAL    0 
 | 
#define ACFG_CS2L_VAL    0 
 | 
#define ACFG_CS2A_VAL    0 
 | 
  
 | 
#define ACFG_CS3U_VAL    0 
 | 
#define ACFG_CS3L_VAL    0 
 | 
#define ACFG_CS3A_VAL    0 
 | 
  
 | 
#define ACFG_CS4U_VAL    0 
 | 
#define ACFG_CS4L_VAL    0 
 | 
#define ACFG_CS4A_VAL    0 
 | 
  
 | 
/* FPGA 16 bit data bus */ 
 | 
#define ACFG_CS5U_VAL    0x00000600 
 | 
#define ACFG_CS5L_VAL    0x00000D01 
 | 
#define ACFG_CS5A_VAL    0 
 | 
  
 | 
#define ACFG_EIM_VAL    0x00002200 
 | 
  
 | 
  
 | 
/* 
 | 
 * FPGA specific settings 
 | 
 */ 
 | 
  
 | 
/* CLKO */ 
 | 
#define ACFG_CCSR_VAL 0x00000305 
 | 
/* drive strength CLKO set to 2 */ 
 | 
#define ACFG_DSCR10_VAL 0x00020000 
 | 
/* drive strength A1..A12 set to 2 */ 
 | 
#define ACFG_DSCR3_VAL 0x02AAAAA8 
 | 
/* drive strength ctrl */ 
 | 
#define ACFG_DSCR7_VAL 0x00020880 
 | 
/* drive strength data */ 
 | 
#define ACFG_DSCR2_VAL 0xAAAAAAAA 
 | 
  
 | 
  
 | 
/* 
 | 
 * Default configuration for GPIOs and peripherals 
 | 
 */ 
 | 
#define ACFG_DDIR_A_VAL        0x00000000 
 | 
#define ACFG_OCR1_A_VAL        0x00000000 
 | 
#define ACFG_OCR2_A_VAL        0x00000000 
 | 
#define ACFG_ICFA1_A_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_A_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_A_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_A_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_A_VAL        0x00000000 
 | 
#define ACFG_GIUS_A_VAL        0xFFFFFFFF 
 | 
#define ACFG_ICR1_A_VAL        0x00000000 
 | 
#define ACFG_ICR2_A_VAL        0x00000000 
 | 
#define ACFG_IMR_A_VAL        0x00000000 
 | 
#define ACFG_GPR_A_VAL        0x00000000 
 | 
#define ACFG_PUEN_A_VAL        0xFFFFFFFF 
 | 
  
 | 
#define ACFG_DDIR_B_VAL        0x00000000 
 | 
#define ACFG_OCR1_B_VAL        0x00000000 
 | 
#define ACFG_OCR2_B_VAL        0x00000000 
 | 
#define ACFG_ICFA1_B_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_B_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_B_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_B_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_B_VAL        0x00000000 
 | 
#define ACFG_GIUS_B_VAL        0xFF3FFFF0 
 | 
#define ACFG_ICR1_B_VAL        0x00000000 
 | 
#define ACFG_ICR2_B_VAL        0x00000000 
 | 
#define ACFG_IMR_B_VAL        0x00000000 
 | 
#define ACFG_GPR_B_VAL        0x00000000 
 | 
#define ACFG_PUEN_B_VAL        0xFFFFFFFF 
 | 
  
 | 
#define ACFG_DDIR_C_VAL        0x00000000 
 | 
#define ACFG_OCR1_C_VAL        0x00000000 
 | 
#define ACFG_OCR2_C_VAL        0x00000000 
 | 
#define ACFG_ICFA1_C_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_C_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_C_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_C_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_C_VAL        0x00000000 
 | 
#define ACFG_GIUS_C_VAL        0xFFFFC07F 
 | 
#define ACFG_ICR1_C_VAL        0x00000000 
 | 
#define ACFG_ICR2_C_VAL        0x00000000 
 | 
#define ACFG_IMR_C_VAL        0x00000000 
 | 
#define ACFG_GPR_C_VAL        0x00000000 
 | 
#define ACFG_PUEN_C_VAL        0xFFFFFF87 
 | 
  
 | 
#define ACFG_DDIR_D_VAL        0x00000000 
 | 
#define ACFG_OCR1_D_VAL        0x00000000 
 | 
#define ACFG_OCR2_D_VAL        0x00000000 
 | 
#define ACFG_ICFA1_D_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_D_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_D_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_D_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_D_VAL        0x00000000 
 | 
#define ACFG_GIUS_D_VAL        0xFFFFFFFF 
 | 
#define ACFG_ICR1_D_VAL        0x00000000 
 | 
#define ACFG_ICR2_D_VAL        0x00000000 
 | 
#define ACFG_IMR_D_VAL        0x00000000 
 | 
#define ACFG_GPR_D_VAL        0x00000000 
 | 
#define ACFG_PUEN_D_VAL        0xFFFFFFFF 
 | 
  
 | 
#define ACFG_DDIR_E_VAL        0x00000000 
 | 
#define ACFG_OCR1_E_VAL        0x00000000 
 | 
#define ACFG_OCR2_E_VAL        0x00000000 
 | 
#define ACFG_ICFA1_E_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_E_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_E_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_E_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_E_VAL        0x00000000 
 | 
#define ACFG_GIUS_E_VAL        0xFCFFCCF8 
 | 
#define ACFG_ICR1_E_VAL        0x00000000 
 | 
#define ACFG_ICR2_E_VAL        0x00000000 
 | 
#define ACFG_IMR_E_VAL        0x00000000 
 | 
#define ACFG_GPR_E_VAL        0x00000000 
 | 
#define ACFG_PUEN_E_VAL        0xFFFFFFFF 
 | 
  
 | 
#define ACFG_DDIR_F_VAL        0x00000000 
 | 
#define ACFG_OCR1_F_VAL        0x00000000 
 | 
#define ACFG_OCR2_F_VAL        0x00000000 
 | 
#define ACFG_ICFA1_F_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFA2_F_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB1_F_VAL    0xFFFFFFFF 
 | 
#define ACFG_ICFB2_F_VAL    0xFFFFFFFF 
 | 
#define ACFG_DR_F_VAL        0x00000000 
 | 
#define ACFG_GIUS_F_VAL        0xFF7F8000 
 | 
#define ACFG_ICR1_F_VAL        0x00000000 
 | 
#define ACFG_ICR2_F_VAL        0x00000000 
 | 
#define ACFG_IMR_F_VAL        0x00000000 
 | 
#define ACFG_GPR_F_VAL        0x00000000 
 | 
#define ACFG_PUEN_F_VAL        0xFFFFFFFF 
 | 
  
 | 
/* Enforce DDR signal strengh & enable USB/PP/DMA burst override bits */ 
 | 
#define ACFG_GPCR_VAL        0x0003000F 
 | 
  
 | 
#define ACFG_ESDMISC_VAL    ESDMISC_LHD+ESDMISC_MDDREN 
 | 
  
 | 
/* FMCR select num LPDDR RAMs and nand 16bits, 2KB pages */ 
 | 
#if (CONFIG_NR_DRAM_BANKS == 1) 
 | 
#define ACFG_FMCR_VAL 0xFFFFFFF9 
 | 
#elif (CONFIG_NR_DRAM_BANKS == 2) 
 | 
#define ACFG_FMCR_VAL 0xFFFFFFFB 
 | 
#endif 
 | 
  
 | 
#define ACFG_AIPI1_PSR0_VAL    0x20040304 
 | 
#define ACFG_AIPI1_PSR1_VAL    0xDFFBFCFB 
 | 
#define ACFG_AIPI2_PSR0_VAL    0x00000000 
 | 
#define ACFG_AIPI2_PSR1_VAL    0xFFFFFFFF 
 | 
  
 | 
/* PCCR enable DMA FEC I2C1 IIM SDHC1 */ 
 | 
#define ACFG_PCCR0_VAL        0x05070410 
 | 
#define ACFG_PCCR1_VAL        0xA14A0608 
 | 
  
 | 
/* 
 | 
 * From here, there should not be any user configuration. 
 | 
 * All Equations are automatic 
 | 
 */ 
 | 
  
 | 
/* fixme none integer value (7.5ns) => 2*hclock = 15ns */ 
 | 
#define ACFG_2XHCLK_LGTH    (2000/CONFIG_HCLK_FREQ)    /* ns */ 
 | 
  
 | 
/* USB 60 MHz ; ARM up to 400; HClK up to 133MHz*/ 
 | 
#define CSCR_MASK 0x0300800D 
 | 
  
 | 
#define ACFG_CSCR_VAL                        \ 
 | 
    (CSCR_MASK                        \ 
 | 
    |((((CONFIG_SPLL_FREQ/CONFIG_USB_FREQ)-1)&0x07) << 28)    \ 
 | 
    |((((CONFIG_MPLL_FREQ/CONFIG_ARM_FREQ)-1)&0x03) << 12)    \ 
 | 
    |((((ACFG_CLK_FREQ/CONFIG_HCLK_FREQ)-1)&0x03) << 8)) 
 | 
  
 | 
/* SSIx CLKO NFC H264 MSHC */ 
 | 
#define ACFG_PCDR0_VAL\ 
 | 
    (((((ACFG_CLK_FREQ/CONFIG_MSHC_FREQ)-1)&0x3F)<<0)    \ 
 | 
    |((((CONFIG_HCLK_FREQ/CONFIG_NFC_FREQ)-1)&0x0F)<<6)    \ 
 | 
    |(((((ACFG_CLK_FREQ/CONFIG_H264_FREQ)-2)*2)&0x3F)<<10)\ 
 | 
    |(((((ACFG_CLK_FREQ/CONFIG_SSI1_FREQ)-2)*2)&0x3F)<<16)\ 
 | 
    |(((CONFIG_CLK0_DIV)&0x07)<<22)\ 
 | 
    |(((CONFIG_CLK0_EN)&0x01)<<25)\ 
 | 
    |(((((ACFG_CLK_FREQ/CONFIG_SSI2_FREQ)-2)*2)&0x3F)<<26)) 
 | 
  
 | 
/* PERCLKx  */ 
 | 
#define ACFG_PCDR1_VAL\ 
 | 
    (((((ACFG_CLK_FREQ/CONFIG_PERIF1_FREQ)-1)&0x3F)<<0)    \ 
 | 
    |((((ACFG_CLK_FREQ/CONFIG_PERIF2_FREQ)-1)&0x3F)<<8)    \ 
 | 
    |((((ACFG_CLK_FREQ/CONFIG_PERIF3_FREQ)-1)&0x3F)<<16)    \ 
 | 
    |((((ACFG_CLK_FREQ/CONFIG_PERIF4_FREQ)-1)&0x3F)<<24)) 
 | 
  
 | 
/* SDRAM controller programming Values */ 
 | 
#if (((2*ACFG_SDRAM_CLOCK_CYCLE_CL_1) > (3*ACFG_2XHCLK_LGTH)) || \ 
 | 
    (ACFG_SDRAM_CLOCK_CYCLE_CL_1 < 1)) 
 | 
#define REG_FIELD_SCL_VAL 3 
 | 
#define REG_FIELD_SCLIMX_VAL 0 
 | 
#else 
 | 
#define REG_FIELD_SCL_VAL\ 
 | 
    ((2*ACFG_SDRAM_CLOCK_CYCLE_CL_1+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH) 
 | 
#define REG_FIELD_SCLIMX_VAL REG_FIELD_SCL_VAL 
 | 
#endif 
 | 
  
 | 
#if ((2*ACFG_SDRAM_RC_DELAY) > (16*ACFG_2XHCLK_LGTH)) 
 | 
#define REG_FIELD_SRC_VAL 0 
 | 
#else 
 | 
#define REG_FIELD_SRC_VAL\ 
 | 
    ((2*ACFG_SDRAM_RC_DELAY+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH) 
 | 
#endif 
 | 
  
 | 
/* TBD Power down timer ; PRCT Bit Field Encoding; burst length 8 ; FP = 0*/ 
 | 
#define REG_ESDCTL_BASE_CONFIG (0x80020485\ 
 | 
                | (((ACFG_SDRAM_NUM_ROW-11)&0x7)<<24)\ 
 | 
                | (((ACFG_SDRAM_NUM_COL-8)&0x3)<<20)\ 
 | 
                | (((ACFG_SDRAM_REFRESH)&0x7)<<13)) 
 | 
  
 | 
#define ACFG_NORMAL_RW_CMD    ((0x0<<28)+REG_ESDCTL_BASE_CONFIG) 
 | 
#define ACFG_PRECHARGE_CMD    ((0x1<<28)+REG_ESDCTL_BASE_CONFIG) 
 | 
#define ACFG_AUTOREFRESH_CMD    ((0x2<<28)+REG_ESDCTL_BASE_CONFIG) 
 | 
#define ACFG_SET_MODE_REG_CMD    ((0x3<<28)+REG_ESDCTL_BASE_CONFIG) 
 | 
  
 | 
/* ESDRAMC Configuration Registers : force CL=3 to lpddr */ 
 | 
#define ACFG_SDRAM_ESDCFG_REGISTER_VAL (0x0\ 
 | 
    | (((((2*ACFG_SDRAM_EXIT_PWD+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH)-1)&0x3)<<21)\ 
 | 
    | (((ACFG_SDRAM_W2R_DELAY-1)&0x1)<<20)\ 
 | 
    | (((((2*ACFG_SDRAM_ROW_PRECHARGE_DELAY+ \ 
 | 
        ACFG_2XHCLK_LGTH-1)/ACFG_2XHCLK_LGTH)-1)&0x3)<<18) \ 
 | 
    | (((ACFG_SDRAM_TMRD_DELAY-1)&0x3)<<16)\ 
 | 
    | (((ACFG_SDRAM_TWR_DELAY)&0x1)<<15)\ 
 | 
    | (((((2*ACFG_SDRAM_RAS_DELAY+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH)-1)&0x7)<<12) \ 
 | 
    | (((((2*ACFG_SDRAM_RRD_DELAY+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH)-1)&0x3)<<10) \ 
 | 
    | (((REG_FIELD_SCLIMX_VAL)&0x3)<<8)\ 
 | 
    | (((((2*ACFG_SDRAM_RCD_DELAY+ACFG_2XHCLK_LGTH-1)/ \ 
 | 
        ACFG_2XHCLK_LGTH)-1)&0x7)<<4) \ 
 | 
    | (((REG_FIELD_SRC_VAL)&0x0F)<<0)) 
 | 
  
 | 
/* Issue Mode register Command to SDRAM */ 
 | 
#define ACFG_SDRAM_MODE_REGISTER_VAL\ 
 | 
    ((((ACFG_SDRAM_BURST_LENGTH)&0x7)<<(0))\ 
 | 
    | (((REG_FIELD_SCL_VAL)&0x7)<<(4))\ 
 | 
    | ((0)<<(3)) /* sequentiql access */ \ 
 | 
    /*| (((ACFG_SDRAM_SINGLE_ACCESS)&0x1)<<(1))*/) 
 | 
  
 | 
/* Issue Extended Mode register Command to SDRAM */ 
 | 
#define ACFG_SDRAM_EXT_MODE_REGISTER_VAL\ 
 | 
    ((ACFG_SDRAM_PARTIAL_ARRAY_SR<<0)\ 
 | 
    | (ACFG_SDRAM_DRIVE_STRENGH<<(5))\ 
 | 
    | (1<<(ACFG_SDRAM_NUM_COL+ACFG_SDRAM_NUM_ROW+1+2))) 
 | 
  
 | 
/* Issue Precharge all Command to SDRAM */ 
 | 
#define ACFG_SDRAM_PRECHARGE_ALL_VAL (1<<10) 
 | 
  
 | 
#endif /* __APF27_H */ 
 |