Esempio n. 1
0
void LED2_off(void)
{
	S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();

	gpio->GPFDAT |= 1 << STATUS_LED_BIT2;

}
Esempio n. 2
0
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;
}
Esempio n. 3
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;
}
Esempio n. 4
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;
}
Esempio n. 5
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;
		 
}
Esempio n. 6
0
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;
}
Esempio n. 7
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]();
}
Esempio n. 8
0
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));
	}
}
Esempio n. 9
0
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;
}
Esempio n. 10
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");
*/
	}
Esempio n. 11
0
//***************************[ 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]
}
Esempio n. 12
0
void LED2_on(void)
{
	S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();

	gpio->GPFDAT &= ~(1 << STATUS_LED_BIT2);
}
Esempio n. 13
0
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;
	}