#include <linux/rfkill-rk.h>
#include <linux/sensor-dev.h>
#include <linux/mfd/tps65910.h>
+#include "../../../drivers/headset_observe/rk_headset.h"
#if defined(CONFIG_HDMI_RK30)
#include "../../../drivers/video/rockchip/hdmi/rk_hdmi.h"
};
#endif
+#if defined (CONFIG_RK_HEADSET_DET) || defined (CONFIG_RK_HEADSET_IRQ_HOOK_ADC_DET)
+
+static int rk_headset_io_init(int gpio, char *iomux_name, int iomux_mode)
+{
+ int ret;
+ ret = gpio_request(gpio, NULL);
+ if(ret)
+ return ret;
+
+ rk30_mux_api_set(iomux_name, iomux_mode);
+ gpio_pull_updown(gpio, PullDisable);
+ gpio_direction_input(gpio);
+ return 0;
+};
+
+struct rk_headset_pdata rk_headset_info = {
+ .Headset_gpio = RK30_PIN0_PC7,
+ .headset_in_type = HEADSET_IN_HIGH,
+ .Hook_adc_chn = 2,
+ .hook_key_code = KEY_MEDIA,
+ .headset_gpio_info = {GPIO0C7_TRACECTL_SMCADDR3_NAME, GPIO0C_GPIO0C7},
+ .headset_io_init = rk_headset_io_init,
+};
+
+struct platform_device rk_device_headset = {
+ .name = "rk_headsetdet",
+ .id = 0,
+ .dev = {
+ .platform_data = &rk_headset_info,
+ }
+};
+#endif
+
+
#if defined(CONFIG_TOUCHSCREEN_GT8XX)
#define TOUCH_RESET_PIN RK30_PIN4_PD0
#define TOUCH_PWR_PIN INVALID_GPIO
#endif
+#ifdef CONFIG_SND_SOC_RT3261
+
+static int rt3261_io_init(int gpio, char *iomux_name, int iomux_mode)
+{
+ gpio_request(gpio,NULL);
+ rk30_mux_api_set(iomux_name, iomux_mode);
+ gpio_direction_output(gpio,1);
+
+};
+
+static struct rt3261_platform_data rt3261_info = {
+ .codec_en_gpio = RK30_PIN4_PD7,
+ .codec_en_gpio_info = {GPIO4D7_SMCDATA15_TRACEDATA15_NAME,GPIO4D_GPIO4D7},
+ .io_init = rt3261_io_init,
+};
+
+#endif
+
#ifdef CONFIG_RK29_SUPPORT_MODEM
#define RK30_MODEM_POWER RK30_PIN4_PD1
#if defined(CONFIG_SEW868)
&rk30_device_sew868,
#endif
+#if defined (CONFIG_RK_HEADSET_DET) || defined (CONFIG_RK_HEADSET_IRQ_HOOK_ADC_DET)
+ &rk_device_headset,
+#endif
#ifdef CONFIG_BATTERY_RK30_ADC
&rk30_device_adc_battery,
#endif
.type = "rt3261",
.addr = 0x1c,
.flags = 0,
+ .platform_data = &rt3261_info,
},
#endif
#include <sound/soc-dapm.h>
#include <sound/initval.h>
#include <sound/tlv.h>
-
+#include <mach/board.h>
#define RT3261_PROC
#ifdef RT3261_PROC
{
struct rt3261_priv *rt3261;
int ret;
+ struct rt3261_platform_data *pdata = pdata = i2c->dev.platform_data;
rt3261 = kzalloc(sizeof(struct rt3261_priv), GFP_KERNEL);
if (NULL == rt3261)
return -ENOMEM;
+ rt3261->codec_en_gpio = pdata->codec_en_gpio;
+ rt3261->io_init = pdata->io_init;
+
+ if(rt3261->io_init)
+ rt3261->io_init(pdata->codec_en_gpio, pdata->codec_en_gpio_info.iomux_name, pdata->codec_en_gpio_info.iomux_mode);
+
i2c_set_clientdata(i2c, rt3261);
DBG("Enter::%s----%d\n",__FUNCTION__,__LINE__);
ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt3261,