Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
82ab86e8
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
未验证
提交
82ab86e8
编写于
10月 30, 2017
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "ASoC: rt5651: Enable jack detection on JD* pins"
This reverts commit
60d5a1a4
. Signed-off-by:
N
Mark Brown
<
broonie@kernel.org
>
上级
3fa30ae9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
2 addition
and
178 deletion
+2
-178
include/sound/rt5651.h
include/sound/rt5651.h
+0
-8
sound/soc/codecs/rt5651.c
sound/soc/codecs/rt5651.c
+2
-166
sound/soc/codecs/rt5651.h
sound/soc/codecs/rt5651.h
+0
-4
未找到文件。
include/sound/rt5651.h
浏览文件 @
82ab86e8
...
@@ -11,19 +11,11 @@
...
@@ -11,19 +11,11 @@
#ifndef __LINUX_SND_RT5651_H
#ifndef __LINUX_SND_RT5651_H
#define __LINUX_SND_RT5651_H
#define __LINUX_SND_RT5651_H
enum
rt5651_jd_src
{
RT5651_JD_NULL
,
RT5651_JD1_1
,
RT5651_JD1_2
,
RT5651_JD2
,
};
struct
rt5651_platform_data
{
struct
rt5651_platform_data
{
/* IN2 can optionally be differential */
/* IN2 can optionally be differential */
bool
in2_diff
;
bool
in2_diff
;
bool
dmic_en
;
bool
dmic_en
;
enum
rt5651_jd_src
jd_src
;
};
};
#endif
#endif
sound/soc/codecs/rt5651.c
浏览文件 @
82ab86e8
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
#include <sound/soc-dapm.h>
#include <sound/soc-dapm.h>
#include <sound/initval.h>
#include <sound/initval.h>
#include <sound/tlv.h>
#include <sound/tlv.h>
#include <sound/jack.h>
#include "rl6231.h"
#include "rl6231.h"
#include "rt5651.h"
#include "rt5651.h"
...
@@ -881,9 +880,6 @@ static const struct snd_soc_dapm_widget rt5651_dapm_widgets[] = {
...
@@ -881,9 +880,6 @@ static const struct snd_soc_dapm_widget rt5651_dapm_widgets[] = {
SND_SOC_DAPM_SUPPLY
(
"PLL1"
,
RT5651_PWR_ANLG2
,
SND_SOC_DAPM_SUPPLY
(
"PLL1"
,
RT5651_PWR_ANLG2
,
RT5651_PWR_PLL_BIT
,
0
,
NULL
,
0
),
RT5651_PWR_PLL_BIT
,
0
,
NULL
,
0
),
/* Input Side */
/* Input Side */
SND_SOC_DAPM_SUPPLY
(
"JD Power"
,
RT5651_PWR_ANLG2
,
RT5651_PWM_JD_M_BIT
,
0
,
NULL
,
0
),
/* micbias */
/* micbias */
SND_SOC_DAPM_SUPPLY
(
"LDO"
,
RT5651_PWR_ANLG1
,
SND_SOC_DAPM_SUPPLY
(
"LDO"
,
RT5651_PWR_ANLG1
,
RT5651_PWR_LDO_BIT
,
0
,
NULL
,
0
),
RT5651_PWR_LDO_BIT
,
0
,
NULL
,
0
),
...
@@ -1532,8 +1528,6 @@ static int rt5651_set_dai_pll(struct snd_soc_dai *dai, int pll_id, int source,
...
@@ -1532,8 +1528,6 @@ static int rt5651_set_dai_pll(struct snd_soc_dai *dai, int pll_id, int source,
static
int
rt5651_set_bias_level
(
struct
snd_soc_codec
*
codec
,
static
int
rt5651_set_bias_level
(
struct
snd_soc_codec
*
codec
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
rt5651_priv
*
rt5651
=
snd_soc_codec_get_drvdata
(
codec
);
switch
(
level
)
{
switch
(
level
)
{
case
SND_SOC_BIAS_PREPARE
:
case
SND_SOC_BIAS_PREPARE
:
if
(
SND_SOC_BIAS_STANDBY
==
snd_soc_codec_get_bias_level
(
codec
))
{
if
(
SND_SOC_BIAS_STANDBY
==
snd_soc_codec_get_bias_level
(
codec
))
{
...
@@ -1562,13 +1556,8 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
...
@@ -1562,13 +1556,8 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
snd_soc_write
(
codec
,
RT5651_PWR_DIG2
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_DIG2
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_VOL
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_VOL
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_MIXER
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_MIXER
,
0x0000
);
if
(
rt5651
->
pdata
.
jd_src
)
{
snd_soc_write
(
codec
,
RT5651_PWR_ANLG1
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_ANLG2
,
0x0204
);
snd_soc_write
(
codec
,
RT5651_PWR_ANLG2
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_ANLG1
,
0x0002
);
}
else
{
snd_soc_write
(
codec
,
RT5651_PWR_ANLG1
,
0x0000
);
snd_soc_write
(
codec
,
RT5651_PWR_ANLG2
,
0x0000
);
}
break
;
break
;
default:
default:
...
@@ -1581,7 +1570,6 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
...
@@ -1581,7 +1570,6 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
static
int
rt5651_probe
(
struct
snd_soc_codec
*
codec
)
static
int
rt5651_probe
(
struct
snd_soc_codec
*
codec
)
{
{
struct
rt5651_priv
*
rt5651
=
snd_soc_codec_get_drvdata
(
codec
);
struct
rt5651_priv
*
rt5651
=
snd_soc_codec_get_drvdata
(
codec
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_codec_get_dapm
(
codec
);
rt5651
->
codec
=
codec
;
rt5651
->
codec
=
codec
;
...
@@ -1597,15 +1585,6 @@ static int rt5651_probe(struct snd_soc_codec *codec)
...
@@ -1597,15 +1585,6 @@ static int rt5651_probe(struct snd_soc_codec *codec)
snd_soc_codec_force_bias_level
(
codec
,
SND_SOC_BIAS_OFF
);
snd_soc_codec_force_bias_level
(
codec
,
SND_SOC_BIAS_OFF
);
if
(
rt5651
->
pdata
.
jd_src
)
{
snd_soc_dapm_force_enable_pin
(
dapm
,
"JD Power"
);
snd_soc_dapm_force_enable_pin
(
dapm
,
"LDO"
);
snd_soc_dapm_sync
(
dapm
);
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_MICBIAS
,
0x38
,
0x38
);
}
return
0
;
return
0
;
}
}
...
@@ -1749,93 +1728,6 @@ static int rt5651_parse_dt(struct rt5651_priv *rt5651, struct device_node *np)
...
@@ -1749,93 +1728,6 @@ static int rt5651_parse_dt(struct rt5651_priv *rt5651, struct device_node *np)
return
0
;
return
0
;
}
}
static
irqreturn_t
rt5651_irq
(
int
irq
,
void
*
data
)
{
struct
rt5651_priv
*
rt5651
=
data
;
queue_delayed_work
(
system_power_efficient_wq
,
&
rt5651
->
jack_detect_work
,
msecs_to_jiffies
(
250
));
return
IRQ_HANDLED
;
}
static
int
rt5651_jack_detect
(
struct
snd_soc_codec
*
codec
,
int
jack_insert
)
{
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_codec_get_dapm
(
codec
);
int
jack_type
;
if
(
jack_insert
)
{
snd_soc_dapm_force_enable_pin
(
dapm
,
"LDO"
);
snd_soc_dapm_sync
(
dapm
);
snd_soc_update_bits
(
codec
,
RT5651_MICBIAS
,
RT5651_MIC1_OVCD_MASK
|
RT5651_MIC1_OVTH_MASK
|
RT5651_PWR_CLK12M_MASK
|
RT5651_PWR_MB_MASK
,
RT5651_MIC1_OVCD_EN
|
RT5651_MIC1_OVTH_600UA
|
RT5651_PWR_MB_PU
|
RT5651_PWR_CLK12M_PU
);
msleep
(
100
);
if
(
snd_soc_read
(
codec
,
RT5651_IRQ_CTRL2
)
&
RT5651_MB1_OC_CLR
)
jack_type
=
SND_JACK_HEADPHONE
;
else
jack_type
=
SND_JACK_HEADSET
;
snd_soc_update_bits
(
codec
,
RT5651_IRQ_CTRL2
,
RT5651_MB1_OC_CLR
,
0
);
}
else
{
/* jack out */
jack_type
=
0
;
snd_soc_update_bits
(
codec
,
RT5651_MICBIAS
,
RT5651_MIC1_OVCD_MASK
,
RT5651_MIC1_OVCD_DIS
);
}
return
jack_type
;
}
static
void
rt5651_jack_detect_work
(
struct
work_struct
*
work
)
{
struct
rt5651_priv
*
rt5651
=
container_of
(
work
,
struct
rt5651_priv
,
jack_detect_work
.
work
);
int
report
,
val
=
0
;
if
(
!
rt5651
->
codec
)
return
;
switch
(
rt5651
->
pdata
.
jd_src
)
{
case
RT5651_JD1_1
:
val
=
snd_soc_read
(
rt5651
->
codec
,
RT5651_INT_IRQ_ST
)
&
0x1000
;
break
;
case
RT5651_JD1_2
:
val
=
snd_soc_read
(
rt5651
->
codec
,
RT5651_INT_IRQ_ST
)
&
0x2000
;
break
;
case
RT5651_JD2
:
val
=
snd_soc_read
(
rt5651
->
codec
,
RT5651_INT_IRQ_ST
)
&
0x4000
;
break
;
default:
break
;
}
report
=
rt5651_jack_detect
(
rt5651
->
codec
,
!
val
);
snd_soc_jack_report
(
rt5651
->
hp_jack
,
report
,
SND_JACK_HEADSET
);
}
int
rt5651_set_jack_detect
(
struct
snd_soc_codec
*
codec
,
struct
snd_soc_jack
*
hp_jack
)
{
struct
rt5651_priv
*
rt5651
=
snd_soc_codec_get_drvdata
(
codec
);
rt5651
->
hp_jack
=
hp_jack
;
rt5651_irq
(
0
,
rt5651
);
return
0
;
}
EXPORT_SYMBOL_GPL
(
rt5651_set_jack_detect
);
static
int
rt5651_i2c_probe
(
struct
i2c_client
*
i2c
,
static
int
rt5651_i2c_probe
(
struct
i2c_client
*
i2c
,
const
struct
i2c_device_id
*
id
)
const
struct
i2c_device_id
*
id
)
{
{
...
@@ -1887,59 +1779,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c,
...
@@ -1887,59 +1779,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c,
rt5651
->
hp_mute
=
1
;
rt5651
->
hp_mute
=
1
;
if
(
rt5651
->
pdata
.
jd_src
)
{
/* IRQ output on GPIO1 */
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_GPIO_CTRL1
,
RT5651_GP1_PIN_MASK
,
RT5651_GP1_PIN_IRQ
);
switch
(
rt5651
->
pdata
.
jd_src
)
{
case
RT5651_JD1_1
:
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_JD_CTRL2
,
RT5651_JD_TRG_SEL_MASK
,
RT5651_JD_TRG_SEL_JD1_1
);
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_IRQ_CTRL1
,
RT5651_JD1_1_IRQ_EN
,
RT5651_JD1_1_IRQ_EN
);
break
;
case
RT5651_JD1_2
:
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_JD_CTRL2
,
RT5651_JD_TRG_SEL_MASK
,
RT5651_JD_TRG_SEL_JD1_2
);
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_IRQ_CTRL1
,
RT5651_JD1_2_IRQ_EN
,
RT5651_JD1_2_IRQ_EN
);
break
;
case
RT5651_JD2
:
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_JD_CTRL2
,
RT5651_JD_TRG_SEL_MASK
,
RT5651_JD_TRG_SEL_JD2
);
regmap_update_bits
(
rt5651
->
regmap
,
RT5651_IRQ_CTRL1
,
RT5651_JD2_IRQ_EN
,
RT5651_JD2_IRQ_EN
);
break
;
case
RT5651_JD_NULL
:
break
;
default:
dev_warn
(
&
i2c
->
dev
,
"Currently only JD1_1 / JD1_2 / JD2 are supported
\n
"
);
break
;
}
}
INIT_DELAYED_WORK
(
&
rt5651
->
jack_detect_work
,
rt5651_jack_detect_work
);
if
(
i2c
->
irq
)
{
ret
=
devm_request_threaded_irq
(
&
i2c
->
dev
,
i2c
->
irq
,
NULL
,
rt5651_irq
,
IRQF_TRIGGER_RISING
|
IRQF_TRIGGER_FALLING
|
IRQF_ONESHOT
,
"rt5651"
,
rt5651
);
if
(
ret
)
{
dev_err
(
&
i2c
->
dev
,
"Failed to reguest IRQ: %d
\n
"
,
ret
);
return
ret
;
}
}
ret
=
snd_soc_register_codec
(
&
i2c
->
dev
,
&
soc_codec_dev_rt5651
,
ret
=
snd_soc_register_codec
(
&
i2c
->
dev
,
&
soc_codec_dev_rt5651
,
rt5651_dai
,
ARRAY_SIZE
(
rt5651_dai
));
rt5651_dai
,
ARRAY_SIZE
(
rt5651_dai
));
...
@@ -1948,9 +1787,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c,
...
@@ -1948,9 +1787,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c,
static
int
rt5651_i2c_remove
(
struct
i2c_client
*
i2c
)
static
int
rt5651_i2c_remove
(
struct
i2c_client
*
i2c
)
{
{
struct
rt5651_priv
*
rt5651
=
i2c_get_clientdata
(
i2c
);
cancel_delayed_work_sync
(
&
rt5651
->
jack_detect_work
);
snd_soc_unregister_codec
(
&
i2c
->
dev
);
snd_soc_unregister_codec
(
&
i2c
->
dev
);
return
0
;
return
0
;
...
...
sound/soc/codecs/rt5651.h
浏览文件 @
82ab86e8
...
@@ -2062,8 +2062,6 @@ struct rt5651_priv {
...
@@ -2062,8 +2062,6 @@ struct rt5651_priv {
struct
snd_soc_codec
*
codec
;
struct
snd_soc_codec
*
codec
;
struct
rt5651_platform_data
pdata
;
struct
rt5651_platform_data
pdata
;
struct
regmap
*
regmap
;
struct
regmap
*
regmap
;
struct
snd_soc_jack
*
hp_jack
;
struct
delayed_work
jack_detect_work
;
int
sysclk
;
int
sysclk
;
int
sysclk_src
;
int
sysclk_src
;
...
@@ -2079,6 +2077,4 @@ struct rt5651_priv {
...
@@ -2079,6 +2077,4 @@ struct rt5651_priv {
bool
hp_mute
;
bool
hp_mute
;
};
};
int
rt5651_set_jack_detect
(
struct
snd_soc_codec
*
codec
,
struct
snd_soc_jack
*
hp_jack
);
#endif
/* __RT5651_H__ */
#endif
/* __RT5651_H__ */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录