static int wacom_suspend_hw(void) { #ifdef GPIO_PEN_RESET_N_18V gpio_direction_output(GPIO_PEN_RESET_N_18V, 0); #endif wacom_power(0); return 0; }
static int wacom_late_resume_hw(void) { #ifdef GPIO_PEN_RESET_N_18V gpio_direction_output(GPIO_PEN_RESET_N_18V, 1); #endif gpio_direction_output(GPIO_PEN_PDCT_18V, 1); wacom_power(1); msleep(100); gpio_direction_input(GPIO_PEN_PDCT_18V); return 0; }
static int wacom_suspend_hw(void) { printk(KERN_ERR "epen: %s,%d \n", __func__, __LINE__); gpio_direction_output(g_gpio_reset_n, 0); wacom_power(0); //gpio_tlmm_config(GPIO_CFG(g_gpio_pdct, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), 1); //gpio_tlmm_config(GPIO_CFG(g_gpio_irq, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), 1); return 0; }
static int wacom_suspend_hw(void) { #ifdef GPIO_PEN_RESET_N_18V gpio_direction_output(GPIO_PEN_RESET_N_18V, 0); #endif wacom_power(0); s3c_gpio_cfgpin(GPIO_PEN_IRQ_18V, S3C_GPIO_INPUT); s3c_gpio_setpull(GPIO_PEN_IRQ_18V, S3C_GPIO_PULL_DOWN); return 0; }
static int wacom_resume_hw(void) { #ifdef GPIO_PEN_RESET_N_18V gpio_direction_output(GPIO_PEN_RESET_N_18V, 1); #endif gpio_direction_output(GPIO_PEN_PDCT_18V, 1); wacom_power(1); /*msleep(100);*/ gpio_direction_input(GPIO_PEN_PDCT_18V); s3c_gpio_cfgpin(GPIO_PEN_IRQ_18V, S3C_GPIO_SFN(0xf)); s3c_gpio_setpull(GPIO_PEN_IRQ_18V, S3C_GPIO_PULL_NONE); return 0; }
void __init wacom_init(void) { int gpio; int ret; #ifdef GPIO_PEN_RESET_N_18V /*Reset*/ gpio = GPIO_PEN_RESET_N_18V; ret = gpio_request(gpio, "PEN_RESET_N"); if (ret) { printk(KERN_ERR "epen:failed to request PEN_RESET_N.(%d)\n", ret); return ; } s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0x1)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); gpio_direction_output(gpio, 0); #endif /*SLP & FWE1*/ gpio = GPIO_PEN_FWE1_18V; ret = gpio_request(gpio, "PEN_FWE1"); if (ret) { printk(KERN_ERR "epen:failed to request PEN_FWE1.(%d)\n", ret); return ; } s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0x1)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); gpio_direction_output(gpio, 0); /*PDCT*/ gpio = GPIO_PEN_PDCT_18V; ret = gpio_request(gpio, "PEN_PDCT"); if (ret) { printk(KERN_ERR "epen:failed to request PEN_PDCT.(%d)\n", ret); return ; } s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s5p_register_gpio_interrupt(gpio); gpio_direction_input(gpio); irq_set_irq_type(gpio_to_irq(gpio), IRQ_TYPE_EDGE_BOTH); /*IRQ*/ gpio = GPIO_PEN_IRQ_18V; ret = gpio_request(gpio, "PEN_IRQ"); if (ret) { printk(KERN_ERR "epen:failed to request PEN_IRQ.(%d)\n", ret); return ; } s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s5p_register_gpio_interrupt(gpio); gpio_direction_input(gpio); wacom_i2c_devs[0].irq = gpio_to_irq(gpio); irq_set_irq_type(wacom_i2c_devs[0].irq, IRQ_TYPE_EDGE_RISING); s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf)); /*LDO_EN*/ #ifdef GPIO_PEN_LDO_EN gpio = GPIO_PEN_LDO_EN; ret = gpio_request(gpio, "PEN_LDO_EN"); if (ret) { printk(KERN_ERR "epen:failed to request PEN_LDO_EN.(%d)\n", ret); return ; } s3c_gpio_cfgpin(gpio, S3C_GPIO_OUTPUT); gpio_direction_output(gpio, 0); #else wacom_power(0); #endif /*WACOM_SET_I2C(3, NULL, wacom_i2c_devs);*/ if (lpcharge) printk(KERN_DEBUG"epen:disable wacom for lpm\n"); else { exynos5_hs_i2c4_set_platdata(NULL); i2c_register_board_info(8, wacom_i2c_devs, ARRAY_SIZE(wacom_i2c_devs)); } printk(KERN_INFO "epen:init\n"); }