/* * 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); }
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); }
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 }
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); }
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 */ }
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); }
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); }
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; }
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 }
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); }
/* * 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 }
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; } }
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); }