Ejemplo n.º 1
0
/*
 * I/O routines
 */  
static void gpio_init_cs8900(void)
{
#ifdef CONFIG_SOC_JZ4740
	__gpio_as_func0(60);             //CS4# 
	__gpio_as_func0(61);             //RD#
	__gpio_as_func0(62);             //WR# 
	__gpio_as_irq_high_level(59);    //irq
	__gpio_disable_pull(59);         //disable pull
	REG_EMC_SMCR4 |= (1 << 6);       //16bit
#elif CONFIG_SOC_JZ4750
	__gpio_as_func0(32*2+23);             //CS3#
	__gpio_as_func0(32*2+25);             //RD# 
	__gpio_as_func0(32*2+26);             //WR# 

#ifdef CONFIG_JZ4750_FUWA
	__gpio_as_irq_high_level(32*4+20);    //irq
	__gpio_disable_pull(32*4+20);         //disable pull
#else
	__gpio_as_irq_high_level(32*2 +6);    //irq
	__gpio_disable_pull(32*2 +6);         //disable pull
#endif

	REG_EMC_SMCR3 |= (1 << 6);            //16bit
#endif
	udelay(1);
}
Ejemplo n.º 2
0
static void gpio_init(void)
{
	unsigned int i;

	/* Initialize NAND Flash Pins */
	__gpio_as_nand();

	/* Initialize SDRAM pins */
	__gpio_as_sdram_16bit_4720();

	/* Initialize LCD pins */
	__gpio_as_lcd_18bit();

	/* Initialize MSC pins */
	__gpio_as_msc();

	/* Initialize Other pins */
	for (i = 0; i < 7; i++) {
		__gpio_as_input(GPIO_KEYIN_BASE + i);
		__gpio_enable_pull(GPIO_KEYIN_BASE + i);
	}

	for (i = 0; i < 8; i++) {
		__gpio_as_output(GPIO_KEYOUT_BASE + i);
		__gpio_clear_pin(GPIO_KEYOUT_BASE + i);
	}

	__gpio_as_input(GPIO_KEYIN_8);
	__gpio_enable_pull(GPIO_KEYIN_8);

	/* enable the TP4, TP5 as UART0 */
	__gpio_jtag_to_uart0();

	__gpio_as_output(GPIO_AUDIO_POP);
	__gpio_set_pin(GPIO_AUDIO_POP);

	__gpio_as_output(GPIO_LCD_CS);
	__gpio_clear_pin(GPIO_LCD_CS);

	__gpio_as_output(GPIO_AMP_EN);
	__gpio_clear_pin(GPIO_AMP_EN);

	__gpio_as_output(GPIO_SDPW_EN);
	__gpio_disable_pull(GPIO_SDPW_EN);
	__gpio_clear_pin(GPIO_SDPW_EN);

	__gpio_as_input(GPIO_SD_DETECT);
	__gpio_disable_pull(GPIO_SD_DETECT);

	__gpio_as_input(GPIO_USB_DETECT);
	__gpio_enable_pull(GPIO_USB_DETECT);
}
Ejemplo n.º 3
0
void gpio_init_cs8900(void)
{
	__gpio_as_func0(60);             //cs4 
	__gpio_as_func0(61);             //cs4 
	__gpio_as_func0(62);             //cs4 
	__gpio_as_irq_high_level(59);    //irq
	__gpio_disable_pull(59);         //disable pull
	REG_EMC_SMCR4 |= (1 << 6);       //16bit
}
Ejemplo n.º 4
0
static void gpio_init(void)
{
	/*
	 * Initialize NAND Flash Pins
	 */
	__gpio_as_nand();

	/*
	 * Initialize SDRAM pins
	 */
	__gpio_as_sdram_16bit_4720();
	/*
	 * Initialize UART0 pins
	 */
	__gpio_as_uart0();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize LCD pins
	 */
	__gpio_as_lcd_18bit();

	/*
	 * Initialize SSI pins
	 */
//	__gpio_as_ssi();

	/*
	 * Initialize I2C pins
	 */
//	__gpio_as_i2c();

	/*
	 * Initialize Other pins
	 */
	__gpio_as_output(GPIO_SD_VCC_EN_N);
	__gpio_clear_pin(GPIO_SD_VCC_EN_N);

	__gpio_as_input(GPIO_SD_CD_N);
	__gpio_disable_pull(GPIO_SD_CD_N);

//	__gpio_as_input(GPIO_SD_WP);
//	__gpio_disable_pull(GPIO_SD_WP);

	__gpio_as_input(GPIO_DC_DETE_N);
//	__gpio_as_input(GPIO_CHARG_STAT_N);
	__gpio_as_input(GPIO_USB_DETE);
	__gpio_as_output(119);
	__gpio_clear_pin(119);
	__gpio_as_output(GPIO_DISP_OFF_N);
}
Ejemplo n.º 5
0
void gpio_init_cs8900(void)
{
#ifdef CONFIG_JzRISC
	__gpio_as_func0(60);             //cs4 
	__gpio_as_func0(61);             //cs4 
	__gpio_as_func0(62);             //cs4 
	__gpio_as_irq_high_level(59);    //irq
	__gpio_disable_pull(59);         //disable pull
	REG_EMC_SMCR4 |= (1 << 6);       //16bit
#endif /* CONFIG_JzRISC */
}
Ejemplo n.º 6
0
static void gpio_init(void)
{
	/*
	 * Initialize SDRAM pins
	 */
	__gpio_as_sdram_32bit();

	/*
	 * Initialize UART0 pins
	 */
	__gpio_as_uart0();

	/*
	 * Initialize NAND Flash Pins
	 */
	__gpio_as_nand();

	/*
	 * Initialize LCD pins
	 */
	__gpio_as_lcd_18bit();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize other pins
	 */
	__gpio_as_output(GPIO_SD_VCC_EN_N);
	__gpio_clear_pin(GPIO_SD_VCC_EN_N);

	__gpio_as_input(GPIO_SD_CD_N);
	__gpio_disable_pull(GPIO_SD_CD_N);

	__gpio_as_input(GPIO_SD_WP);
	__gpio_disable_pull(GPIO_SD_WP);
}
Ejemplo n.º 7
0
Archivo: sakc.c Proyecto: 7LK/McWRT
static void gpio_init(void)
{
	/*
	 * Initialize NAND Flash Pins
	 */
	__gpio_as_nand();

	/*
	 * Initialize SDRAM pins
	 */	
	__gpio_as_sdram_16bit_4725();

	/*
	 * Initialize UART0 pins
	 */
	__gpio_as_uart0();

	/*
	 * Initialize LCD pins
	 */
	__gpio_as_lcd_18bit();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize SSI pins
	 */
	__gpio_as_ssi();

	/*
	 * Initialize I2C pins
	 */
	__gpio_as_i2c();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize Other pins
	 */
	__gpio_as_input(GPIO_SD_DETECT);
	__gpio_disable_pull(GPIO_SD_DETECT);
}
Ejemplo n.º 8
0
static void uh_init_gpio(struct uh_data *uh)
{
        /* get current pin level */
	__gpio_disable_pull(uh->gpio_pin);
        __gpio_as_input(uh->gpio_pin);

	udelay(1);
	
	/* Because of every plug IN/OUT action will casue more than one interrupt, 
	   So whether rising trigger or falling trigger method can both start the detection.
         */

	__gpio_as_irq_rise_edge(uh->gpio_pin);

	return;
}
Ejemplo n.º 9
0
static void __init board_gpio_setup(void)
{
	/*
	 * Most of the GPIO pins should have been initialized by the boot-loader
	 */

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize LCD pins
	 */
//	__gpio_as_lcd_18bit();

	/*
	 * Initialize SSI pins
	 */
	__gpio_as_ssi();

	/*
	 * Initialize I2C pins
	 */
	__gpio_as_i2c();

	/*
	 * Initialize Other pins
	 */
	__gpio_as_output(GPIO_SD_VCC_EN_N);
	__gpio_clear_pin(GPIO_SD_VCC_EN_N);

	__gpio_as_input(GPIO_SD_CD_N);
	__gpio_disable_pull(GPIO_SD_CD_N);

//	__gpio_as_input(GPIO_SD_WP);
//	__gpio_disable_pull(GPIO_SD_WP);

	__gpio_as_input(GPIO_DC_DETE_N);
//	__gpio_as_input(GPIO_CHARG_STAT_N);
	__gpio_as_input(GPIO_USB_DETE);

	__gpio_as_output(GPIO_DISP_OFF_N);

//	__gpio_as_output(GPIO_LED_EN);
}
void lcd_ctrl_init(void *lcdbase)
{
	__lcd_close_backlight();
	__lcd_display_pin_init();
#if defined(CONFIG_ANDROID_LCD_PROBE)
	__gpio_disable_pull(GPIO_LCD_PWR_N);
	__gpio_clear_pin(GPIO_LCD_PWR_N);
	__gpio_as_output(GPIO_LCD_PWR_N);
	msdelay(50);
	__gpio_set_pin(LCD_RESET_PIN);
	msdelay(1);
	__gpio_clear_pin(LCD_RESET_PIN);
	msdelay(10);
	__gpio_set_pin(LCD_RESET_PIN);
	msdelay(100);
	Jz_LcdProbe();

//	__gpio_clear_pin(LCD_RESET_PIN);
//	mdelay(10);
//	__gpio_set_pin(LCD_RESET_PIN);
//	mdelay(100);
#endif
	
	jz_lcd_init_mem(lcdbase, &panel_info);
	jz_lcd_desc_init(&panel_info);
	jz_lcd_hw_init(&panel_info);
	board_lcd_board_init();
//	__lcd_display_on();
//	lcd_enable();

#ifdef DEBUG
	serial_puts_info("***************************LCDC INFO****************************\n");
	serial_puts_msg("lcdbase = ");
	dump_uint(lcdbase);
	serial_puts_msg("  vl_bpix =  ");
	dump_uint(panel_info.vl_bpix);
	serial_puts_msg(" \n");
	print_lcdc_desc(&panel_info);
#endif
}
Ejemplo n.º 11
0
void mmc_detect_init()
{
	MMCGPIOEvent = OSSemCreate(0);

	__gpio_mask_irq(MMC_CD_PIN);
	__gpio_as_input(MMC_CD_PIN);
	__gpio_disable_pull(MMC_CD_PIN);
	request_irq(48 + MMC_CD_PIN, mmc_gpio_irq_handler, 0);
	__gpio_unmask_irq(MMC_CD_PIN);
	cardexsit = 0;
	mmcsrc.GetRequest = GetRequest;
	mmcsrc.Response = Response;
	mmcsrc.Name = "MMC";
	printf("Register Midware SRC MMC! \n");
	RegisterMidSrc(&mmcsrc);
	mmcid = mmcsrc.ID;
	printf("mmc ID %d \n",mmcsrc.ID);

	MMC_Initialize();
	OSTaskCreate(MMCGpioTask, (void *)0,
		     (void *)&MGTaskStack[MMC_GPIO_TASK_STK_SIZE - 1],
		     MMC_GPIO_TASK_PRIO);

}
Ejemplo n.º 12
0
/*
 * Module init and exit
 */
static int __init udc_hotplug_init(void)
{
        int retval;

	kudcd_task = kthread_run(udc_thread, NULL, "kudcd");
	if (IS_ERR(kudcd_task)) {
		printk(KERN_ERR "jz_udc_hotplug: Failed to create system monitor thread.\n");
		return PTR_ERR(kudcd_task);
	}

        retval = request_irq(UDC_HOTPLUG_IRQ, udc_hotplug_irq,
                             IRQF_DISABLED, "udc_hotplug", NULL);
        if (retval) {
                printk("Could not get udc hotplug irq %d\n", UDC_HOTPLUG_IRQ);
		return retval;
        }

        /* get current pin level */
	__gpio_disable_pull(UDC_HOTPLUG_PIN);
        __gpio_as_input(UDC_HOTPLUG_PIN);
	udelay(1);
        udc_pin_level = __gpio_get_pin(UDC_HOTPLUG_PIN);

        if (udc_pin_level) {
		/* Cable has connected, wait for disconnection. */
		__gpio_as_irq_fall_edge(UDC_HOTPLUG_PIN);
        }
        else {
		/* Cable has disconnected, wait for connection. */
		__gpio_as_irq_rise_edge(UDC_HOTPLUG_PIN);
        }

	printk("JZ UDC hotplug driver registered\n");

	return 0;
}
int board_private_init(void)
{
#if DEBUG_SLEEP_WAKE
	unsigned int pin[] = {25, 26,END_PIN};
	serial_puts_info("Now simultion key\n");
	simulation_random_key(pin, 500, 6000, 1);
#endif

	serial_puts_info("warrior low i2c pin\n");
	__gpio_as_output(GPIO_I2C0_SDA);
	__gpio_clear_pin(GPIO_I2C0_SDA);

	__gpio_as_output(GPIO_I2C1_SCL);
	__gpio_clear_pin(GPIO_I2C1_SCL);

	__gpio_as_output(GPIO_I2C3_SCL);
	__gpio_clear_pin(GPIO_I2C3_SCL);
#if 1
#if 0
	//if the board is old warrior:aa, you can open the if condition
	serial_puts_info("output low GPA17 5V-EN\n");
        __gpio_as_output(17);
	__gpio_set_pin(17);
#endif
	serial_puts_info("Output low GPB2 for setting DC charg current\n");
	__gpio_as_output(1 * 32 + 2);
	__gpio_clear_pin(1 * 32 + 2);

	serial_puts_info("output low GPB23 LCD-VCC-EN\n");
	__gpio_as_output(1 * 32 + 23);
	__gpio_clear_pin(1 * 32 + 23);

	serial_puts_info("output low GPB25 MOTOR-EN\n");
	__gpio_as_output(1 * 32 + 25);
	__gpio_clear_pin(1 * 32 + 25);

	serial_puts_info("output low GPB27 CIM-VCC-EN\n");
	 __gpio_as_output(1 * 32 + 27);
	__gpio_clear_pin(1 * 32 + 27);

	serial_puts_info("output low GPD8 WLAN-PW-EN\n");
	__gpio_as_output(3 * 32 + 8);
	__gpio_clear_pin(3 * 32 + 8);

#ifdef NO_CHARGE_DETE
	serial_puts_info("output HIGH GPF20 SD0-CD-N\n");
	__gpio_as_output(5 * 32 + 20);
	__gpio_set_pin(5 * 32 + 20);
/*
 * set TF-Card GPIO mode as input-nopull to reset it to avoid card state confused.
 */
	__gpio_as_input(4 * 32 + 20);
	__gpio_disable_pull(4 * 32 + 20);
	__gpio_as_input(4 * 32 + 21);
	__gpio_disable_pull(4 * 32 + 21);
	__gpio_as_input(4 * 32 + 22);
	__gpio_disable_pull(4 * 32 + 22);
	__gpio_as_input(4 * 32 + 23);
	__gpio_disable_pull(4 * 32 + 23);
	__gpio_as_input(4 * 32 + 28);
	__gpio_disable_pull(4 * 32 + 28);
	__gpio_as_input(4 * 32 + 29);
	__gpio_disable_pull(4 * 32 + 29);
#endif

	serial_puts_info("Power off : WiFi\n");
	act8600_ldo_disable(ACT8600_LDO6_VOLTAGE_SET);
	__gpio_as_output(3 * 32 + 20);
	__gpio_clear_pin(3 * 32 + 20);
	__gpio_as_output(3 * 32 + 21);
	__gpio_clear_pin(3 * 32 + 21);
	__gpio_as_output(3 * 32 + 22);
	__gpio_clear_pin(3 * 32 + 22);
	__gpio_as_output(3 * 32 + 23);
	__gpio_clear_pin(3 * 32 + 23);
	serial_puts_info("Power off : TouchScreen\n");
	act8600_ldo_disable(ACT8600_LDO7_VOLTAGE_SET);
	act8600_vbus_disable();
#endif
#ifdef NO_CHARGE_DETE
	if(0 == detect_boot_mode()){
		if(charge_detect()){
			charge_logo_display();
		}
	}
#endif
}
Ejemplo n.º 14
0
static void gpio_init(void)
{
	/*
	 * Initialize NAND Flash Pins
	 */
	__gpio_as_nand();

	/*
	 * Initialize SDRAM pins
	 */
	__gpio_as_sdram_16bit_4720();

	/*
	 * Initialize LCD pins
	 */
	__gpio_as_lcd_18bit();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize Other pins
	 */
	unsigned int i;
	for (i = 0; i < 7; i++){
		__gpio_as_input(GPIO_KEYIN_BASE + i);
		__gpio_enable_pull(GPIO_KEYIN_BASE + i);
	}

	for (i = 0; i < 8; i++) {
		__gpio_as_output(GPIO_KEYOUT_BASE + i);
		__gpio_clear_pin(GPIO_KEYOUT_BASE + i);
	}

	/* enable the TP4, TP5 as UART0 */
	__gpio_jtag_to_uart0();

	/*
	 * Initialize UART0 pins, in Ben NanoNote uart0 and keyin8 use the
	 * same gpio, init the gpio as uart0 cause a keyboard bug. so for
	 * end user we disable the uart0
	 */
	if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){
		/* if pressed [S] */
		printf("[S] pressed, enable UART0\n");
		gd->boot_option |= BOOT_WITH_ENABLE_UART;
		__gpio_as_uart0();
	} else {
		__gpio_as_input(GPIO_KEYIN_8);
		__gpio_enable_pull(GPIO_KEYIN_8);
	}

	__gpio_as_output(GPIO_AUDIO_POP);
	__gpio_set_pin(GPIO_AUDIO_POP);

	__gpio_as_output(GPIO_LCD_CS);
	__gpio_clear_pin(GPIO_LCD_CS);

	__gpio_as_output(GPIO_AMP_EN);
	__gpio_clear_pin(GPIO_AMP_EN);

	__gpio_as_output(GPIO_SDPW_EN);
	__gpio_disable_pull(GPIO_SDPW_EN);
	__gpio_clear_pin(GPIO_SDPW_EN);

	__gpio_as_input(GPIO_SD_DETECT);
	__gpio_disable_pull(GPIO_SD_DETECT);

	__gpio_as_input(GPIO_USB_DETECT);
	__gpio_enable_pull(GPIO_USB_DETECT);

	if (__gpio_get_pin(GPIO_KEYIN_BASE + 3) == 0) {
		printf("[M] pressed, boot from sd card\n");
		gd->boot_option |= BOOT_FROM_SDCARD;
	}
}
Ejemplo n.º 15
0
static void gpio_init(void)
{
	REG_GPIO_PXPES(0) = 0xffffffff;
	REG_GPIO_PXPES(1) = 0xffffffff;
	REG_GPIO_PXPES(2) = 0xffffffff;
	REG_GPIO_PXPES(3) = 0xffffffff;

	/*
	 * Initialize NAND Flash Pins
	 */
	__gpio_as_nand();

	/*
	 * Initialize SDRAM pins
	 */
	__gpio_as_sdram_32bit();

	/*
	 * Initialize UART0 pins
	 */
	__gpio_as_uart0();

	/*
	 * Initialize MSC pins
	 */
	__gpio_as_msc();

	/*
	 * Initialize LCD pins
	 */
	__gpio_as_lcd_16bit();

	/*
	 * Initialize I2C pins
	 */
	__gpio_as_i2c();

	/*
	 * Initialize Other pins
	 */
	__gpio_as_output(GPIO_SD_VCC_EN_N);
	__gpio_clear_pin(GPIO_SD_VCC_EN_N);

	__gpio_as_input(GPIO_SD_CD_N);
	__gpio_disable_pull(GPIO_SD_CD_N);

	__gpio_as_input(GPIO_CHARG_STAT_N);
	__gpio_as_input(GPIO_USB_DETE);

	__gpio_as_output(GPIO_LED_EN);
	__gpio_set_pin(GPIO_LED_EN);

	__gpio_as_input(GPIO_HP_DETECT);
	__gpio_disable_pull(GPIO_HP_DETECT);

	__gpio_as_output(GPIO_DISP_OFF_N);

	__gpio_as_output(GPIO_LED_EN);
	__gpio_set_pin(GPIO_LED_EN);
	__gpio_as_input(127);

	/* Make sure the external cs8900a won't touch the bus */
	__gpio_enable_pull(GPIO_ETH_CS);
}