int __init Si4709_driver_init(void) { int ret = 0; debug("Si4709_driver_init called"); /*Initilize the Si4709 dev mutex*/ Si4709_dev_mutex_init(); /*misc device registration*/ if( (ret = misc_register(&Si4709_misc_device)) < 0 ) { error("Si4709_driver_init misc_register failed"); return ret; } s3c_gpio_cfgpin(GPIO_FM_INT, S3C_GPIO_SFN(GPIO_FM_INT_AF)); s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_NONE); set_irq_type(Si4709_IRQ, IRQ_TYPE_EDGE_BOTH); if( (ret = request_irq(Si4709_IRQ, Si4709_isr, IRQF_DISABLED, "Si4709", (void *)NULL)) < 0 ) { error("Si4709_driver_init request_irq failed %d", Si4709_IRQ); goto MISC_DREG; } if (gpio_is_valid(GPIO_FM_nRST)) { if (gpio_request(GPIO_FM_nRST, S3C_GPIO_LAVEL(GPIO_FM_nRST))) printk(KERN_ERR "Failed to request GPIO_FM_nRST!\n"); gpio_direction_output(GPIO_FM_nRST, GPIO_LEVEL_LOW); } s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_DOWN); /****Resetting the device****/ gpio_set_value(GPIO_FM_nRST, GPIO_LEVEL_LOW); gpio_set_value(GPIO_FM_nRST, GPIO_LEVEL_HIGH); /*Add the i2c driver*/ if ( (ret = Si4709_i2c_drv_init() < 0) ) { goto MISC_IRQ_DREG; } init_waitqueue_head(&Si4709_waitq); debug("Si4709_driver_init successful"); return ret; MISC_IRQ_DREG: free_irq(Si4709_IRQ, (void *)NULL); MISC_DREG: misc_deregister(&Si4709_misc_device); return ret; }
int Si4709_driver_init(void) { int ret = 0; printk("[diony]%s:\n", __func__); /*Initialize the Si4709 dev mutex*/ Si4709_dev_mutex_init(); /*misc device registration*/ ret = misc_register(&Si4709_misc_device); if (ret < 0) { pr_err("%s: misc_register failed\n", __func__); return ret; } #if 0 s3c_gpio_cfgpin(GPIO_FM_INT, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_NONE); #endif if (gpio_tlmm_config(GPIO_CFG(GPIO_FM_INT, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE)) pr_err("%s: gpio_tlmm_config (gpio=%d) failed\n", __func__, GPIO_FM_INT); set_irq_type(FM_IRQ_INT, IRQ_TYPE_EDGE_FALLING); ret = request_irq(FM_IRQ_INT, Si4709_isr, IRQF_DISABLED, "Si4709", NULL); if (ret) { pr_err("%s: request_irq failed %d\n", __func__, GPIO_FM_INT); goto MISC_DREG; } if (gpio_is_valid(FM_RESET)) { if (gpio_request(FM_RESET, "GPJ2")) printk(KERN_ERR "Failed to request FM_RESET!\n"); gpio_direction_output(FM_RESET, 0); } /* VNVS: 13-OCT'09---- Initially Pulling the interrupt pin HIGH * as the FM Radio device gives 5ms low pulse */ #if 0 s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_UP); #endif if (gpio_tlmm_config(GPIO_CFG(GPIO_FM_INT, 0, GPIO_CFG_INPUT, GPIO_CFG_PULL_UP, GPIO_CFG_2MA), GPIO_CFG_ENABLE)) pr_err("%s: gpio_tlmm_config (gpio=%d) failed\n", __func__, GPIO_FM_INT); /* Resetting the device */ gpio_set_value(FM_RESET, 0); gpio_set_value(FM_RESET, 1); /* Freeing the FM_RESET pin */ gpio_free(FM_RESET); /* Add the i2c driver */ ret = Si4709_i2c_drv_init(); if (ret < 0) goto MISC_IRQ_DREG; init_waitqueue_head(&Si4709_waitq); printk("Si4709_driver_init successful"); return ret; MISC_IRQ_DREG: free_irq(FM_IRQ_INT, NULL); MISC_DREG: misc_deregister(&Si4709_misc_device); return ret; }
int __init Si4709_driver_init(void) { int ret = 0; debug("Si4709_driver_init called"); /*Initialize the Si4709 dev mutex*/ Si4709_dev_mutex_init(); /*misc device registration*/ if( (ret = misc_register(&Si4709_misc_device)) < 0 ) { error("Si4709_driver_init misc_register failed"); return ret; } set_irq_type(Si4709_IRQ, IRQ_TYPE_EDGE_FALLING); if( (ret = request_irq(Si4709_IRQ, Si4709_isr, IRQF_DISABLED, "Si4709", (void *)NULL)) < 0 ) { error("Si4709_driver_init request_irq failed %d", OMAP_GPIO_FM_INT); goto MISC_DREG; } else { debug("Si4709_driver_init request_irq success %d", OMAP_GPIO_FM_INT); //enable_irq(Si4709_IRQ); } /****Resetting the device****/ gpio_set_value(OMAP_GPIO_FM_nRST, GPIO_LEVEL_LOW); mdelay(5); gpio_set_value(OMAP_GPIO_FM_nRST, GPIO_LEVEL_HIGH); /*VNVS: 13-OCT'09---- Freeing the FM_RESET pin*/ //gpio_free(OMAP_GPIO_FM_nRST); //changoh.heo 2010.11.12 delete code /*Add the i2c driver*/ if ( (ret = Si4709_i2c_drv_init() < 0) ) { goto MISC_IRQ_DREG; } init_waitqueue_head(&Si4709_waitq); debug_ioctls(); disable_irq(Si4709_IRQ); debug("Si4709_driver_init successful"); mdelay(5); gpio_set_value(OMAP_GPIO_FM_nRST, GPIO_LEVEL_LOW);//changoh.heo 2010.11.12 delete code return ret; MISC_IRQ_DREG: free_irq(Si4709_IRQ, (void *)NULL); MISC_DREG: misc_deregister(&Si4709_misc_device); return ret; }
int __init Si4709_driver_init(void) { int ret = 0; unsigned int gpio_fm_rst = GPIO_FM_RST; debug("Si4709_driver_init called\n"); #if defined(CONFIG_MACH_T0) if (system_rev >= 3) gpio_fm_rst = GPIO_FM_RST_REV03; #endif /*Initialize the Si4709 dev mutex */ Si4709_dev_mutex_init(); /*misc device registration */ ret = misc_register(&Si4709_misc_device); if (ret < 0) { error("Si4709_driver_init misc_register failed\n"); return ret; } #if defined(CONFIG_MACH_M0) if (system_rev >= 15) Si4709_int = GPIO_FM_INT_REV15; else #endif Si4709_int = GPIO_FM_INT; Si4709_irq = gpio_to_irq(Si4709_int); irq_set_irq_type(Si4709_irq, IRQ_TYPE_EDGE_FALLING); /*KGVS: Configuring the GPIO_FM_INT in mach-jupiter.c */ ret = request_irq(Si4709_irq, Si4709_isr, IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, "Si4709", NULL); if (ret) { error("Si4709_driver_init request_irq " "failed %d", Si4709_int); goto MISC_DREG; } else debug("Si4709_driver_init request_irq " "success %d", Si4709_int); if (gpio_is_valid(gpio_fm_rst)) { if (gpio_request(gpio_fm_rst, "FM_RST")) debug(KERN_ERR "Failed to request " "FM_RESET!\n\n"); gpio_direction_output(gpio_fm_rst, GPIO_LEVEL_LOW); } #if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M0_CTC) if (gpio_is_valid(GPIO_FM_MIC_SW)) { if (gpio_request(GPIO_FM_MIC_SW, "FM_MIC_SW")) debug(KERN_ERR "Failed to request " "FM_MIC_SW!\n\n"); gpio_direction_output(GPIO_FM_MIC_SW, GPIO_LEVEL_LOW); } #endif /*VNVS: 13-OCT'09---- Initially Pulling the interrupt pin HIGH as the FM Radio device gives 5ms low pulse*/ s3c_gpio_setpull(Si4709_int, S3C_GPIO_PULL_UP); /****Resetting the device****/ gpio_set_value(gpio_fm_rst, GPIO_LEVEL_LOW); s3c_gpio_cfgpin(Si4709_int, S3C_GPIO_OUTPUT); s3c_gpio_setpull(Si4709_int, S3C_GPIO_PULL_DOWN); gpio_set_value(gpio_fm_rst, GPIO_LEVEL_HIGH); usleep_range(10, 15); s3c_gpio_cfgpin(Si4709_int, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(Si4709_int, S3C_GPIO_PULL_UP); gpio_free(gpio_fm_rst); /*Add the i2c driver */ ret = Si4709_i2c_drv_init(); if (ret < 0) goto MISC_IRQ_DREG; init_waitqueue_head(&Si4709_waitq); debug("Si4709_driver_init successful\n"); return ret; MISC_IRQ_DREG: free_irq(Si4709_irq, NULL); MISC_DREG: misc_deregister(&Si4709_misc_device); Si4709_dev_mutex_destroy(); return ret; }
int __init Si4709_driver_init(void) { int ret = 0; debug("Si4709_driver_init called"); /*Initialize the Si4709 dev mutex*/ Si4709_dev_mutex_init(); /*misc device registration*/ if( (ret = misc_register(&Si4709_misc_device)) < 0 ) { error("Si4709_driver_init misc_register failed"); return ret; } s3c_gpio_cfgpin(GPIO_FM_INT, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_NONE); set_irq_type(FM_IRQ_INT, IRQ_TYPE_EDGE_FALLING); /*KGVS: Configuring the GPIO_FM_INT in mach-jupiter.c*/ if( (ret = request_irq(FM_IRQ_INT, Si4709_isr, IRQF_DISABLED , "Si4709", NULL )) ) { error("Si4709_driver_init request_irq failed %d", GPIO_FM_INT); goto MISC_DREG; } else debug("Si4709_driver_init request_irq success %d", GPIO_FM_INT); if (gpio_is_valid(FM_RESET)) { if (gpio_request(FM_RESET, "GPJ2")) printk(KERN_ERR "Failed to request FM_RESET!\n"); gpio_direction_output(FM_RESET, GPIO_LEVEL_LOW); } /*VNVS: 13-OCT'09---- Initially Pulling the interrupt pin HIGH as the FM Radio device gives 5ms low pulse*/ s3c_gpio_setpull(GPIO_FM_INT, S3C_GPIO_PULL_UP); /****Resetting the device****/ gpio_set_value(FM_RESET, GPIO_LEVEL_LOW); gpio_set_value(FM_RESET, GPIO_LEVEL_HIGH); /*VNVS: 13-OCT'09---- Freeing the FM_RESET pin*/ gpio_free(FM_RESET); /*Add the i2c driver*/ if ( (ret = Si4709_i2c_drv_init() < 0) ) { goto MISC_IRQ_DREG; } init_waitqueue_head(&Si4709_waitq); debug("Si4709_driver_init successful"); return ret; MISC_IRQ_DREG: free_irq(FM_IRQ_INT, NULL); MISC_DREG: misc_deregister(&Si4709_misc_device); return ret; }