aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/samsung/fm_si4709/Si4705_main.c
diff options
context:
space:
mode:
authorcodeworkx <codeworkx@cyanogenmod.com>2012-09-22 09:48:20 +0200
committercodeworkx <codeworkx@cyanogenmod.com>2012-09-22 14:02:16 +0200
commit2489007e7d740ccbc3e0a202914e243ad5178787 (patch)
treeb8e6380ea7b1da63474ad68a5dba997e01146043 /drivers/samsung/fm_si4709/Si4705_main.c
parent5f67568eb31e3a813c7c52461dcf66ade15fc2e7 (diff)
downloadkernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.zip
kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.gz
kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.bz2
merge opensource jb u5
Change-Id: I1aaec157aa196f3448eff8636134fce89a814cf2
Diffstat (limited to 'drivers/samsung/fm_si4709/Si4705_main.c')
-rw-r--r--drivers/samsung/fm_si4709/Si4705_main.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/samsung/fm_si4709/Si4705_main.c b/drivers/samsung/fm_si4709/Si4705_main.c
index aaccd5f..0695e17 100644
--- a/drivers/samsung/fm_si4709/Si4705_main.c
+++ b/drivers/samsung/fm_si4709/Si4705_main.c
@@ -329,6 +329,7 @@ static long Si4709_ioctl(struct file *filp, unsigned int ioctl_cmd,
debug("Si4709_IOC_VOLUME_GET called\n");
ret = (long)Si4709_dev_volume_get(&volume);
+
if (ret < 0)
debug("Si4709_IOC_VOLUME_GET failed\n");
else if (copy_to_user
@@ -757,9 +758,14 @@ void debug_ioctls(void)
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();
@@ -791,19 +797,19 @@ int __init Si4709_driver_init(void)
debug("Si4709_driver_init request_irq "
"success %d", Si4709_int);
- if (gpio_is_valid(GPIO_FM_RST)) {
- if (gpio_request(GPIO_FM_RST, "GPC1"))
+ 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);
+ 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, "GPL0"))
+ 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_RST, GPIO_LEVEL_LOW);
+ gpio_direction_output(GPIO_FM_MIC_SW, GPIO_LEVEL_LOW);
}
#endif
@@ -812,15 +818,15 @@ int __init Si4709_driver_init(void)
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);
+ 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);
+ 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(FM_RESET);
+ gpio_free(gpio_fm_rst);
/*Add the i2c driver */
ret = Si4709_i2c_drv_init();
@@ -838,6 +844,8 @@ MISC_IRQ_DREG:
MISC_DREG:
misc_deregister(&Si4709_misc_device);
+ Si4709_dev_mutex_destroy();
+
return ret;
}