void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; switch (width) { /* Channel 2 supports 4 and 8-bit bus width */ case 8: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG3(3); gpio <= S5PV210_GPG3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_2X); } case 0: case 1: case 4: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG2(0); gpio <= S5PV210_GPG2(6); gpio++) { if (gpio != S5PV210_GPG2(2)) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_2X); } /* Chip detect pin Pull up -> none*/ s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_NONE); break; default: printk(KERN_ERR "Wrong SD/MMC bus width : %d\n", width); } }
void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; switch (width) { /* Channel 0 supports 4 and 8-bit bus width */ case 8: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG1(3); gpio <= S5PV210_GPG1(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_3X); } case 0: case 1: case 4: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG0(0); gpio <= S5PV210_GPG0(6); gpio++) { if (gpio != S5PV210_GPG0(2)) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_3X); } break; default: printk(KERN_ERR "Wrong SD/MMC bus width : %d\n", width); } s3c_gpio_cfgpin(S5PV210_GPJ2(7), S3C_GPIO_OUTPUT); s3c_gpio_setpull(S5PV210_GPJ2(7), S3C_GPIO_PULL_NONE); gpio_set_value(S5PV210_GPJ2(7), 1); }
void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; switch (width) { /* Channel 2 supports 4 and 8-bit bus width */ case 8: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG3(3); gpio <= S5PV210_GPG3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s3c_gpio_set_drvstrength(gpio, DRVSTR); } case 0: case 1: case 4: if (machine_is_herring() && herring_is_cdma_wimax_dev()) break; /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG2(0); gpio <= S5PV210_GPG2(6); gpio++) { if (gpio != S5PV210_GPG2(2)) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } s3c_gpio_set_drvstrength(gpio, DRVSTR); } break; default: printk(KERN_ERR "Wrong SD/MMC bus width : %d\n", width); } }
int s5p_hpd_set_hdmiint(void) { /* EINT -> HDMI */ set_irq_type(IRQ_EINT13, IRQ_TYPE_NONE); if (last_hpd_state) s5p_hdmi_disable_interrupts(HDMI_IRQ_HPD_UNPLUG); else s5p_hdmi_disable_interrupts(HDMI_IRQ_HPD_PLUG); atomic_set(&hdmi_status, HDMI_ON); s3c_gpio_cfgpin(S5PV210_GPH1(5), S5PV210_GPH1_5_HDMI_HPD); s3c_gpio_setpull(S5PV210_GPH1(5), S3C_GPIO_PULL_DOWN); s3c_gpio_set_drvstrength(S5PV210_GPH1(5), S3C_GPIO_DRVSTR_4X); s5p_hdmi_hpd_gen(); if (s5p_hdmi_get_hpd_status()) s5p_hdmi_enable_interrupts(HDMI_IRQ_HPD_UNPLUG); else{ s5p_hdmi_enable_interrupts(HDMI_IRQ_HPD_PLUG); printk("\n++ %d",__LINE__); } return 0; }
void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; #if defined(CONFIG_MACH_P1_CDMA) unsigned int memory_enable; memory_enable = S5PV210_GPJ1(1); #endif switch (width) { /* Channel 2 supports 4 and 8-bit bus width */ case 8: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG3(3); gpio <= S5PV210_GPG3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_2X); } case 0: case 1: case 4: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG2(0); gpio <= S5PV210_GPG2(6); gpio++) { if (gpio != S5PV210_GPG2(2)) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_2X); } break; default: printk(KERN_ERR "Wrong SD/MMC bus width : %d\n", width); } #if defined(CONFIG_MACH_P1_CDMA) s3c_gpio_cfgpin(memory_enable, S3C_GPIO_OUTPUT); s3c_gpio_setpull(memory_enable, S3C_GPIO_PULL_NONE); gpio_set_value(memory_enable, 1); #endif }
static int __init s5p_hpd_probe(struct platform_device *pdev) { if (misc_register(&hpd_misc_device)) { printk(KERN_WARNING " Couldn't register device 10, %d.\n", HPD_MINOR); return -EBUSY; } init_waitqueue_head(&hpd_struct.waitq); spin_lock_init(&hpd_struct.lock); atomic_set(&hpd_struct.state, -1); atomic_set(&hdmi_status, HDMI_OFF); s3c_gpio_cfgpin(S5PV210_GPH1(5), S5PV210_GPH1_5_EXT_INT31_5); s3c_gpio_setpull(S5PV210_GPH1(5), S3C_GPIO_PULL_DOWN); s3c_gpio_set_drvstrength(S5PV210_GPH1(5), S3C_GPIO_DRVSTR_4X); if (gpio_get_value(S5PV210_GPH1(5))) { atomic_set(&hpd_struct.state, HPD_HI); last_hpd_state = HPD_HI; irq_event = EVENT_RISING; } else { atomic_set(&hpd_struct.state, HPD_LO); last_hpd_state = HPD_LO; irq_event = EVENT_FALLING; } set_irq_type(IRQ_EINT13, IRQ_TYPE_EDGE_BOTH); if (request_irq(IRQ_EINT13, s5p_hpd_irq_handler, IRQF_DISABLED, "hpd", s5p_hpd_irq_handler)) { printk(KERN_ERR "failed to install %s irq\n", "hpd"); misc_deregister(&hpd_misc_device); return -EIO; } s5p_hdmi_register_isr((void *) s5p_hpd_irq_handler, (u8)HDMI_IRQ_HPD_PLUG); s5p_hdmi_register_isr((void *) s5p_hpd_irq_handler, (u8)HDMI_IRQ_HPD_UNPLUG); return 0; }
void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; switch (width) { /* Channel 3 supports 4-bit bus width */ case 0: case 1: case 4: /* Set all the necessary GPIO function and pull up/down */ for (gpio = S5PV210_GPG3(0); gpio <= S5PV210_GPG3(6); gpio++) { if (gpio != S5PV210_GPG3(2)) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP); } s3c_gpio_set_drvstrength(gpio, DRVSTR); } break; default: printk(KERN_ERR "Wrong SD/MMC bus width : %d\n", width); } }
int s5p_hpd_set_eint(void) { /* HDMI -> EINT */ atomic_set(&hdmi_status, HDMI_OFF); s5p_hdmi_clear_pending(HDMI_IRQ_HPD_PLUG); s5p_hdmi_clear_pending(HDMI_IRQ_HPD_UNPLUG); s5p_hdmi_disable_interrupts(HDMI_IRQ_HPD_PLUG); s5p_hdmi_disable_interrupts(HDMI_IRQ_HPD_UNPLUG); s3c_gpio_cfgpin(S5PV210_GPH1(5), S5PV210_GPH1_5_EXT_INT31_5); s3c_gpio_setpull(S5PV210_GPH1(5), S3C_GPIO_PULL_DOWN); if (s5p_hpd_get_state()) set_irq_type(IRQ_EINT13, IRQ_TYPE_EDGE_FALLING); else set_irq_type(IRQ_EINT13, IRQ_TYPE_EDGE_RISING); s3c_gpio_set_drvstrength(S5PV210_GPH1(5), S3C_GPIO_DRVSTR_4X); printk("\n++ s5p_hpd_set_eint\n"); return 0; }