void LED2_off(void) { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); gpio->GPFDAT |= 1 << STATUS_LED_BIT2; }
int board_init (void) { S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); /* to reduce PLL lock time, adjust the LOCKTIME register */ clk_power->LOCKTIME = 0xFFFFFF; /* FCLK:HCLK:PCLK = 1:4:8 */ clk_power->CLKDIVN = 0x05; /* Change to Asynchronous bus mode */ __asm__( "mrc p15, 0, r1, c1, c0, 0\n" /* read ctrl register */ "orr r1, r1, #0xc0000000\n" /* Asynchronous */ "mcr p15, 0, r1, c1, c0, 0\n" /* write ctrl register */ :::"r1" ); /* configure MPLL */ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV); /* some delay between MPLL and UPLL */ delay (4000); /* configure UPLL */ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV); /* some delay between MPLL and UPLL */ delay (8000); /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; gpio->GPBCON = 0x00044554; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; /* arch number of SMDK2410-Board */ gd->bd->bi_arch_number = MACH_TYPE_MINI2440; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x30000100; icache_enable(); dcache_enable(); return 0; }
int board_init (void) { S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); clk_power->CLKDIVN = S3C2410_CLKDIV; /* change to asynchronous bus mod */ __asm__( "mrc p15, 0, r1, c1, c0, 0\n" /* read ctrl register */ "orr r1, r1, #0xc0000000\n" /* Asynchronous */ "mcr p15, 0, r1, c1, c0, 0\n" /* write ctrl register */ :::"r1" ); /* to reduce PLL lock time, adjust the LOCKTIME register */ clk_power->LOCKTIME = 0xFFFFFF; /* configure MPLL */ clk_power->MPLLCON = S3C2410_MPLL_200MHZ; /* some delay between MPLL and UPLL */ delay (4000); /* configure UPLL */ clk_power->UPLLCON = S3C2410_UPLL_48MHZ; /* some delay between MPLL and UPLL */ delay (8000); /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; gpio->GPBCON = 0x00045555; gpio->GPBDAT &= (~(1<<6)); gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; /* arch number of SMDK2410-Board */ gd->bd->bi_arch_number = MACH_TYPE_SMDK2410; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x30000100; icache_enable(); dcache_enable(); return 0; }
/* * Miscellaneous platform dependent initialisations */ int board_init (void) { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); /* set up the I/O ports */ /* gpio->GPACON = 0x007FFFFF; gpio->GPBCON = 0x00055555; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF94FFBA; gpio->GPGUP = 0x0000FFEF; gpio->GPGDAT = gpio->GPGDAT & ((~(1<<4)) | (1<<4)) ; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; gpio->GPJCON = 0x02aaaaaa; gpio->GPJUP = 0x00001fff; */ gpio->GPACON = 0x007FFFFF; //每个 pin的设置取决于原理图,从原理图可知 GPA的每个IO都是使用的其特殊功能 gpio->GPBCON = 0x00044555; //每组GPIO的配置方式不一致,需要结合主控的数据手册和板子的原理图来进行配置 gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; // S3C24X0_I2S * const i2s = S3C24X0_GetBase_I2S(); //HJ_add 屏蔽IIS, // i2s->IISCON = 0x00; //HJ_add 屏蔽IIS, /* arch number of TQ2440-Board */ gd->bd->bi_arch_number = MACH_TYPE_JZ2440; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x30000100; icache_enable(); dcache_enable(); return 0; }
void iic_init() { S3C24X0_I2C * const i2c = S3C24X0_GetBase_I2C(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); gpio->GPEUP |= 0xc000; gpio->GPECON |= 0xa00000; i2c->IICCON =ACKENABLE|(0<<6)|TXRXINTR|0xf; i2c->IICADD = 0x10; i2c->IICSTAT = 0x10; }
int board_init (void) { DECLARE_GLOBAL_DATA_PTR; S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); /* to reduce PLL lock time, adjust the LOCKTIME register */ clk_power->LOCKTIME = 0xFFFFFF; /* configure MPLL */ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV); /* some delay between MPLL and UPLL */ delay (4000); /* configure UPLL */ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV); /* some delay between MPLL and UPLL */ delay (8000); /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; gpio->GPBCON = 0x00044555; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; /* arch number of SMDK2410-Board */ gd->bd->bi_arch_number = MACH_TYPE_SMDK2410; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x30000100; icache_enable(); dcache_enable(); return 0; }
void IRQ_Handle(void) { unsigned long oft = intregs->INTOFFSET; S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); // printk("IRQ_Handle: %d\n", oft); //清中断 if( oft == 4 ) gpio->EINTPEND = 1<<7; //EINT4-7合用IRQ4,注意EINTPEND[3:0]保留未用,向这些位写入1可能导致未知结果 intregs->SRCPND = 1<<oft; intregs->INTPND = intregs->INTPND; /* run the isr */ isr_handle_array[oft](); }
void LED_init(void) { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); gpio->GPFCON &= ~((GPIO_PIN_MASK << STATUS_LED_BIT1*2) | (GPIO_PIN_MASK << STATUS_LED_BIT2*2) \ | (GPIO_PIN_MASK << STATUS_LED_BIT4*2)); gpio->GPFCON |= (GPIO_PIN_OUTPUT << STATUS_LED_BIT1*2) | (GPIO_PIN_OUTPUT << STATUS_LED_BIT2*2) \ | (GPIO_PIN_OUTPUT << STATUS_LED_BIT4*2); gpio->GPFUP &= (GPIO_PULLUP_DIS << STATUS_LED_BIT1) | (GPIO_PULLUP_DIS << STATUS_LED_BIT2) \ | (GPIO_PULLUP_DIS << STATUS_LED_BIT4); if (STATUS_LED_ACTIVE == 0){ gpio->GPFDAT |= ((1 << STATUS_LED_BIT1) | (1 << STATUS_LED_BIT2) | (1 << STATUS_LED_BIT4)); }else { gpio->GPFDAT &= ~((1 << STATUS_LED_BIT1) | (1 << STATUS_LED_BIT2)| (1 << STATUS_LED_BIT4)); } }
int board_init (void) { S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); S3C24X0_MEMCTL * const memctl = S3C24X0_GetBase_MEMCTL(); unsigned long bus_conf; /*Buzzer_Stop*/ gpio->GPBCON &= ~3; //set GPB0 as output gpio->GPBCON |= 1; gpio->GPBDAT &= ~1; /* to reduce PLL lock time, adjust the LOCKTIME register */ clk_power->LOCKTIME = 0xFFFFFF; /* configure MPLL */ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV); /* some delay between MPLL and UPLL */ delay (4000); /* configure UPLL */ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV); /* some delay between MPLL and UPLL */ delay (8000); /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; gpio->GPBCON = 0x002a9655; gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; gpio->GPCUP = 0x0000FFFF; gpio->GPDCON = 0xAAAAAAAA; gpio->GPDUP = 0x0000FFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFD95FFBA; gpio->GPGUP = 0x0000FFFF; #ifdef CONFIG_SERIAL3 gpio->GPHCON = 0x002AAAAA; #else gpio->GPHCON = 0x002AFAAA; #endif gpio->GPHUP = 0x000007FF; gpio->GPJCON = 0x2AAAAAA; #if 0 /* USB Device Part */ /*GPGCON is reset for USB Device */ gpio->GPGCON = (gpio->GPGCON & ~(3 << 24)) | (1 << 24); /* Output Mode */ gpio->GPGUP = gpio->GPGUP | ( 1 << 12); /* Pull up disable */ gpio->GPGDAT |= ( 1 << 12) ; gpio->GPGDAT &= ~( 1 << 12) ; udelay(20000); gpio->GPGDAT |= ( 1 << 12) ; #endif /*configure for cs8900 chip IO*/ bus_conf = memctl->BWSCON; memctl->BWSCON = (bus_conf & ~0x0000F000) | 0x0000d000; /* arch number of AKAE2440-Board */ gd->bd->bi_arch_number = MACH_TYPE_AKAE2440; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x30000100; icache_enable(); dcache_enable(); return 0; }
void usb_init_slave(void) { char *mode; int i; U8 key; U32 mpll_val, upll_val, divn_upll=0; extern int bBootFrmNORFlash(void); /* start add by ll ,replace the Port_Init() */ gpioregs = S3C24X0_GetBase_GPIO(); gpioregs->GPGCON = 0xfd95ffba; /* thisway.diy, GPG12-->OUTPUT, GPG9-->OUTPUT for FS2410, as USB Device enable */ gpioregs->GPGUP = 0xffff; // The pull up function is disabled GPG[15:0] gpioregs->GPGDAT &= ~(1<<12); /* disable USB Device, enable later, thisway.diy */ /* end ll */ clk_powerregs = S3C24X0_GetBase_CLOCK_POWER(); usbdevregs = S3C24X0_GetBase_USB_DEVICE(); dmaregs = S3C24X0_GetBase_DMAS(); udelay(100000); #if 0 // USB device detection control rGPGCON &= ~(3<<24); rGPGCON |= (1<<24); // output rGPGUP |= (1<<12); // pullup disable rGPGDAT |= (1<<12); // output #endif //ChangeUPllValue(60,4,2); // 48MHz //for(i=0; i<7; i++); //ChangeClockDivider(13,12); //ChangeMPllValue(97,1,2); //296Mhz Isr_Init(); gpioregs->MISCCR=gpioregs->MISCCR&~(1<<3); // USBD is selected instead of USBH1 gpioregs->MISCCR=gpioregs->MISCCR&~(1<<13); // USB port 1 is enabled. // // USBD should be initialized first of all. // isUsbdSetConfiguration=0; #if 0 UsbdMain(); MMU_Init(); //MMU should be reconfigured or turned off for the debugger, //After downloading, MMU should be turned off for the MMU based program,such as WinCE. #else //thisway.diy MMU_EnableICache(); UsbdMain(); udelay(100000); gpioregs->GPGDAT |= ((1<<9) | (1<<12)); /* enable USB Device, thisway.diy */ gpioregs->GPBDAT |= (1<<9); /* enable USB Device, thisway.diy */ gpioregs->GPCDAT |= (1<<5); /* enable USB Device, thisway.diy */ #endif #if USBDMA mode="DMA"; #else mode="Int"; #endif // CLKOUT0/1 select. //printf("CLKOUT0:MPLL in, CLKOUT1:RTC clock.\n"); //Clk0_Enable(0); // 0:MPLLin, 1:UPLL, 2:FCLK, 3:HCLK, 4:PCLK, 5:DCLK0 //Clk1_Enable(2); // 0:MPLLout, 1:UPLL, 2:RTC, 3:HCLK, 4:PCLK, 5:DCLK1 // Clk0_Disable(); // Clk1_Disable(); mpll_val = clk_powerregs->MPLLCON; upll_val = clk_powerregs->UPLLCON; if (0) //(!bBootFrmNORFlash()) { S3C24X0_INTERRUPT * intregs; intregs = S3C24X0_GetBase_INTERRUPT(); printf("UPLLVal [M:%xh,P:%xh,S:%xh]\n", (upll_val&(0xff<<12))>>12,(upll_val&(0x3f<<4))>>4,(upll_val&0x3)); printf("MPLLVal [M:%xh,P:%xh,S:%xh]\n", (mpll_val&(0xff<<12))>>12,(mpll_val&(0x3f<<4))>>4,(mpll_val&0x3)); printf("CLKDIVN:%xh\n", clk_powerregs->CLKDIVN); intregs->INTSUBMSK = 0x3ff; gpioregs->GPBDAT = 0x740; gpioregs->GPCDAT = 0x20; gpioregs->GPGDAT = 0xba2c; printf("\nINTMOD = %x\n", intregs->INTMOD); printf("INTMSK = %x\n", intregs->INTMSK); printf("INTSUBMSK = %x\n", intregs->INTSUBMSK); printf("\nGPBCON = %x\n", gpioregs->GPBCON); printf("GPBDAT = %x\n", gpioregs->GPBDAT); printf("GPCCON = %x\n", gpioregs->GPCCON); printf("GPCDAT = %x\n", gpioregs->GPCDAT); printf("GPGCON = %x\n", gpioregs->GPGCON); printf("GPGDAT = %x\n", gpioregs->GPGDAT); /* printf("\n\n"); printf("+---------------------------------------------+\n"); printf("| S3C2440A USB Downloader ver R0.03 2004 Jan |\n"); printf("+---------------------------------------------+\n"); // printf("FCLK=%4.1fMHz,%s mode\n",FCLK/1000000.,mode); printf("USB: IN_ENDPOINT:1 OUT_ENDPOINT:3\n"); printf("FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>\n"); printf("NOTE: Power off/on or press the reset button for 1 sec\n"); printf(" in order to get a valid USB device address.\n"); printf("\n"); */ }
//***************************[ PORTS ]**************************************************** void Port_Init(void) { gpioregs = S3C24X0_GetBase_GPIO(); //CAUTION:Follow the configuration order for setting the ports. // 1) setting value(GPnDAT) // 2) setting control register (GPnCON) // 3) configure pull-up resistor(GPnUP) //32bit data bus configuration //*** PORT A GROUP //Ports : GPA22 GPA21 GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12 //Signal : nFCE nRSTOUT nFRE nFWE ALE CLE nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 //Binary : 1 1 1 , 1 1 1 1 , 1 1 1 1 //Ports : GPA11 GPA10 GPA9 GPA8 GPA7 GPA6 GPA5 GPA4 GPA3 GPA2 GPA1 GPA0 //Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0 //Binary : 1 1 1 1 , 1 1 1 1 , 1 1 1 1 gpioregs->GPACON = 0x7fffff; //**** PORT B GROUP //Ports : GPB10 GPB9 GPB8 GPB7 GPB6 GPB5 GPB4 GPB3 GPB2 GPB1 GPB0 //Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard //Setting: INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT //Binary : 00 , 01 00 , 01 00 , 01 01 , 01 01 , 01 01 gpioregs->GPBCON = 0x044555; gpioregs->GPBUP = 0x7ff; // The pull up function is disabled GPB[10:0] gpioregs->GPBDAT &= ~(1<<0); /* ½ûÖ¹·äÃùÆ÷ */ gpioregs->GPBDAT &= ~(1<<9); /* disable USB Device, enable later, thisway.diy */ //*** PORT C GROUP //Ports : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8 GPC7 GPC6 GPC5 GPC4 GPC3 GPC2 GPC1 GPC0 //Signal : VD7 VD6 VD5 VD4 VD3 VD2 VD1 VD0 LCDVF2 LCDVF1 OUTPUT VM VFRAME VLINE VCLK LEND //Binary : 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 01 10 , 10 10 , 10 10 gpioregs->GPCCON = 0xaaaaa6aa; gpioregs->GPCUP = 0xffff; // The pull up function is disabled GPC[15:0] gpioregs->GPCDAT &= ~(1<<5); /* disable USB Device, enable later, thisway.diy */ //*** PORT D GROUP //Ports : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0 //Signal : VD23 VD22 VD21 VD20 VD19 VD18 VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9 VD8 //Binary : 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 ,10 10 gpioregs->GPDCON = 0xaaaaaaaa; gpioregs->GPDUP = 0xffff; // The pull up function is disabled GPD[15:0] //*** PORT E GROUP //Ports : GPE15 GPE14 GPE13 GPE12 GPE11 GPE10 GPE9 GPE8 GPE7 GPE6 GPE5 GPE4 //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK IN //Binary : 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 00 , //------------------------------------------------------------------------------------------------------- //Ports : GPE3 GPE2 GPE1 GPE0 //Signal : IN IN IN IN //Binary : 00 00 , 00 00 //rGPECON = 0xaaaaaaaa; //rGPEUP = 0xffff; // The pull up function is disabled GPE[15:0] gpioregs->GPECON = 0xaaaaa800; // For added AC97 setting gpioregs->GPEUP = 0xffff; //*** PORT F GROUP //Ports : GPF7 GPF6 GPF5 GPF4 GPF3 GPF2 GPF1 GPF0 //Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0 //Setting: Output Output Output Output EINT3 EINT2 EINT1 EINT0 //Binary : 01 01 , 01 01 , 10 10 , 10 10 gpioregs->GPFCON = 0x55aa; gpioregs->GPFUP = 0xff; // The pull up function is disabled GPF[7:0] //*** PORT G GROUP //Ports : GPG15 GPG14 GPG13 GPG12 GPG11 GPG10 GPG9 GPG8 GPG7 GPG6 //Signal : nYPON YMON nXPON XMON EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI //Setting: nYPON YMON nXPON Output EINT19 Output Output Output SPICLK1 SPIMOSI1 //Binary : 11 11 , 11 01 , 10 01 , 01 01 , 11 11 //----------------------------------------------------------------------------------------- //Ports : GPG5 GPG4 GPG3 GPG2 GPG1 GPG0 //Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA //Setting: SPIMISO1 LCD_PWRDN EINT11 nSS0 EINT9 EINT8 //Binary : 11 11 , 10 11 , 10 10 //rGPGCON = 0xff95ffba; gpioregs->GPGCON = 0xfd95ffba; /* thisway.diy, GPG12-->OUTPUT, GPG9-->OUTPUT for FS2410, as USB Device enable */ gpioregs->GPGUP = 0xffff; // The pull up function is disabled GPG[15:0] gpioregs->GPGDAT &= ~((1<<9) | (1<<12)); /* disable USB Device, enable later, thisway.diy */ //*** PORT H GROUP //Ports : GPH10 GPH9 GPH8 GPH7 GPH6 GPH5 GPH4 GPH3 GPH2 GPH1 GPH0 //Signal : CLKOUT1 CLKOUT0 UCLK nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0 //Binary : 10 , 10 10 , 11 11 , 10 10 , 10 10 , 10 10 gpioregs->GPHCON = 0x2afaaa; gpioregs->GPHUP = 0x7ff; // The pull up function is disabled GPH[10:0] // Added for S3C2440X, DonGo //*** PORT J GROUP //Ports : GPJ12 GPJ11 GPJ10 GPJ9 GPJ8 GPJ7 GPJ6 GPJ5 GPJ4 GPJ3 GPJ2 GPJ1 GPJ0 //Signal : CAMRESET CAMPCLKOUT CAMHREF CAMVSYNC CAMPCLKIN CAMDAT[7] CAMDAT[6] CAMDAT[5] CAMDAT[4] CAMDAT[3] CAMDAT[2] CAMDAT[1] CAMDAT[0] //Binary : 10 10 10 10 10 10 10 10 10 10 10 10 10 gpioregs->GPJCON = 0x02aaaaaa; gpioregs->GPJUP = 0x1fff; // The pull up function is disabled GPH[10:0] //External interrupt will be falling edge triggered. gpioregs->EXTINT0 = 0x22222222; // EINT[7:0] gpioregs->EXTINT1 = 0x22222222; // EINT[15:8] gpioregs->EXTINT2 = 0x22222222; // EINT[23:16] }
void LED2_on(void) { S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); gpio->GPFDAT &= ~(1 << STATUS_LED_BIT2); }
int board_init (void) { S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); // /* to reduce PLL lock time, adjust the LOCKTIME register */ // clk_power->LOCKTIME = 0xFFFFFF; // // /* configure MPLL */ // clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV); // // /* some delay between MPLL and UPLL */ // delay (4000); // // /* configure UPLL */ // clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV); // // /* some delay between MPLL and UPLL */ // delay (8000); /* set up the I/O ports */ gpio->GPACON = 0x007FFFFF; #if defined(CONFIG_S3C2440) gpio->GPBCON = 0x00295551; #else gpio->GPBCON = 0x00044556; #endif gpio->GPBUP = 0x000007FF; gpio->GPCCON = 0xAAAAAAAA; // gpio->GPCUP = 0x0000FFFF; gpio->GPCUP = 0XFFFFFFFF; gpio->GPDCON = 0xAAAAAAAA; // gpio->GPDUP = 0x0000FFFF; gpio->GPDUP = 0XFFFFFFFF; gpio->GPECON = 0xAAAAAAAA; gpio->GPEUP = 0x0000FFFF; gpio->GPFCON = 0x000055AA; gpio->GPFUP = 0x000000FF; gpio->GPGCON = 0xFF95FFBA; gpio->GPGUP = 0x0000FFFF; gpio->GPHCON = 0x002AFAAA; gpio->GPHUP = 0x000007FF; gpio->GPBDAT = 0X00000000; /* Support both s3c2440 and s3c2410 */ if (0 & ((gpio->GSTATUS1 == 0X32410000) || (gpio->GSTATUS1 == 0X32410002 ))) { /* FLCK : HCLK: PCLK = 1:2:4 */ clk_power->CLKDIVN = S3C2410_CLKDIV; /* set cpu async... mode */ __asm__( "mrc p15, 0, r1, c1, c0, 0\n" /* read ctrl register */ "orr r1, r1, #0xc0000000\n" /* asynchronous */ "mcr p15, 0, r1, c1, c0, 0\n" /* write ctrl register */ :::"r1" ); /* SET PLL LOCK TIME */ clk_power->LOCKTIME = 0XFFFFFF; /* SET MPLL */ clk_power->MPLLCON = S3C2410_MPLL_200MHZ; /* AFTER SET MPLL, DELAY SOME TIME TO SET UPLL */ delay(4000); /* SET UPLL */ clk_power->UPLLCON = S3C2410_UPLL_48MHZ; /* DELAY SOME TIME */ delay(8000); /* MACHINE TYPE ID */ gd->bd->bi_arch_number = MACH_TYPE_SMDK2410; }