Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
37e57066
Commit
37e57066
authored
Sep 29, 2015
by
Chanwoo Choi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'ib-extcon-mfd-4.4' into extcon-next
parents
363b3891
6c20b934
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
113 additions
and
21 deletions
+113
-21
drivers/extcon/extcon-arizona.c
drivers/extcon/extcon-arizona.c
+88
-18
drivers/mfd/wm5110-tables.c
drivers/mfd/wm5110-tables.c
+6
-0
include/dt-bindings/mfd/arizona.h
include/dt-bindings/mfd/arizona.h
+2
-0
include/linux/mfd/arizona/pdata.h
include/linux/mfd/arizona/pdata.h
+6
-0
include/linux/mfd/arizona/registers.h
include/linux/mfd/arizona/registers.h
+11
-3
No files found.
drivers/extcon/extcon-arizona.c
View file @
37e57066
...
@@ -43,11 +43,18 @@
...
@@ -43,11 +43,18 @@
#define ARIZONA_MICD_CLAMP_MODE_JDL_GP5H 0x9
#define ARIZONA_MICD_CLAMP_MODE_JDL_GP5H 0x9
#define ARIZONA_MICD_CLAMP_MODE_JDH_GP5H 0xb
#define ARIZONA_MICD_CLAMP_MODE_JDH_GP5H 0xb
#define ARIZONA_TST_CAP_DEFAULT 0x3
#define ARIZONA_TST_CAP_CLAMP 0x1
#define ARIZONA_HPDET_MAX 10000
#define ARIZONA_HPDET_MAX 10000
#define HPDET_DEBOUNCE 500
#define HPDET_DEBOUNCE 500
#define DEFAULT_MICD_TIMEOUT 2000
#define DEFAULT_MICD_TIMEOUT 2000
#define QUICK_HEADPHONE_MAX_OHM 3
#define MICROPHONE_MIN_OHM 1257
#define MICROPHONE_MAX_OHM 30000
#define MICD_DBTIME_TWO_READINGS 2
#define MICD_DBTIME_TWO_READINGS 2
#define MICD_DBTIME_FOUR_READINGS 4
#define MICD_DBTIME_FOUR_READINGS 4
...
@@ -117,12 +124,15 @@ static const struct arizona_micd_range micd_default_ranges[] = {
...
@@ -117,12 +124,15 @@ static const struct arizona_micd_range micd_default_ranges[] = {
{
.
max
=
430
,
.
key
=
BTN_5
},
{
.
max
=
430
,
.
key
=
BTN_5
},
};
};
/* The number of levels in arizona_micd_levels valid for button thresholds */
#define ARIZONA_NUM_MICD_BUTTON_LEVELS 64
static
const
int
arizona_micd_levels
[]
=
{
static
const
int
arizona_micd_levels
[]
=
{
3
,
6
,
8
,
11
,
13
,
16
,
18
,
21
,
23
,
26
,
28
,
31
,
34
,
36
,
39
,
41
,
44
,
46
,
3
,
6
,
8
,
11
,
13
,
16
,
18
,
21
,
23
,
26
,
28
,
31
,
34
,
36
,
39
,
41
,
44
,
46
,
49
,
52
,
54
,
57
,
60
,
62
,
65
,
67
,
70
,
73
,
75
,
78
,
81
,
83
,
89
,
94
,
100
,
49
,
52
,
54
,
57
,
60
,
62
,
65
,
67
,
70
,
73
,
75
,
78
,
81
,
83
,
89
,
94
,
100
,
105
,
111
,
116
,
122
,
127
,
139
,
150
,
161
,
173
,
186
,
196
,
209
,
220
,
245
,
105
,
111
,
116
,
122
,
127
,
139
,
150
,
161
,
173
,
186
,
196
,
209
,
220
,
245
,
270
,
295
,
321
,
348
,
375
,
402
,
430
,
489
,
550
,
614
,
681
,
752
,
903
,
1071
,
270
,
295
,
321
,
348
,
375
,
402
,
430
,
489
,
550
,
614
,
681
,
752
,
903
,
1071
,
1257
,
1257
,
30000
,
};
};
static
const
unsigned
int
arizona_cable
[]
=
{
static
const
unsigned
int
arizona_cable
[]
=
{
...
@@ -140,6 +150,7 @@ static void arizona_extcon_hp_clamp(struct arizona_extcon_info *info,
...
@@ -140,6 +150,7 @@ static void arizona_extcon_hp_clamp(struct arizona_extcon_info *info,
{
{
struct
arizona
*
arizona
=
info
->
arizona
;
struct
arizona
*
arizona
=
info
->
arizona
;
unsigned
int
mask
=
0
,
val
=
0
;
unsigned
int
mask
=
0
,
val
=
0
;
unsigned
int
cap_sel
=
0
;
int
ret
;
int
ret
;
switch
(
arizona
->
type
)
{
switch
(
arizona
->
type
)
{
...
@@ -147,10 +158,21 @@ static void arizona_extcon_hp_clamp(struct arizona_extcon_info *info,
...
@@ -147,10 +158,21 @@ static void arizona_extcon_hp_clamp(struct arizona_extcon_info *info,
case
WM8280
:
case
WM8280
:
mask
=
ARIZONA_HP1L_SHRTO
|
ARIZONA_HP1L_FLWR
|
mask
=
ARIZONA_HP1L_SHRTO
|
ARIZONA_HP1L_FLWR
|
ARIZONA_HP1L_SHRTI
;
ARIZONA_HP1L_SHRTI
;
if
(
clamp
)
if
(
clamp
)
{
val
=
ARIZONA_HP1L_SHRTO
;
val
=
ARIZONA_HP1L_SHRTO
;
else
cap_sel
=
ARIZONA_TST_CAP_CLAMP
;
}
else
{
val
=
ARIZONA_HP1L_FLWR
|
ARIZONA_HP1L_SHRTI
;
val
=
ARIZONA_HP1L_FLWR
|
ARIZONA_HP1L_SHRTI
;
cap_sel
=
ARIZONA_TST_CAP_DEFAULT
;
}
ret
=
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_HP_TEST_CTRL_1
,
ARIZONA_HP1_TST_CAP_SEL_MASK
,
cap_sel
);
if
(
ret
!=
0
)
dev_warn
(
arizona
->
dev
,
"Failed to set TST_CAP_SEL: %d
\n
"
,
ret
);
break
;
break
;
default:
default:
mask
=
ARIZONA_RMV_SHRT_HP1L
;
mask
=
ARIZONA_RMV_SHRT_HP1L
;
...
@@ -270,6 +292,7 @@ static void arizona_start_mic(struct arizona_extcon_info *info)
...
@@ -270,6 +292,7 @@ static void arizona_start_mic(struct arizona_extcon_info *info)
struct
arizona
*
arizona
=
info
->
arizona
;
struct
arizona
*
arizona
=
info
->
arizona
;
bool
change
;
bool
change
;
int
ret
;
int
ret
;
unsigned
int
mode
;
/* Microphone detection can't use idle mode */
/* Microphone detection can't use idle mode */
pm_runtime_get
(
info
->
dev
);
pm_runtime_get
(
info
->
dev
);
...
@@ -295,9 +318,14 @@ static void arizona_start_mic(struct arizona_extcon_info *info)
...
@@ -295,9 +318,14 @@ static void arizona_start_mic(struct arizona_extcon_info *info)
regmap_write
(
arizona
->
regmap
,
0x80
,
0x0
);
regmap_write
(
arizona
->
regmap
,
0x80
,
0x0
);
}
}
if
(
info
->
detecting
&&
arizona
->
pdata
.
micd_software_compare
)
mode
=
ARIZONA_ACCDET_MODE_ADC
;
else
mode
=
ARIZONA_ACCDET_MODE_MIC
;
regmap_update_bits
(
arizona
->
regmap
,
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_ACCESSORY_DETECT_MODE_1
,
ARIZONA_ACCESSORY_DETECT_MODE_1
,
ARIZONA_ACCDET_MODE_MASK
,
ARIZONA_ACCDET_MODE_MIC
);
ARIZONA_ACCDET_MODE_MASK
,
mode
);
arizona_extcon_pulse_micbias
(
info
);
arizona_extcon_pulse_micbias
(
info
);
...
@@ -804,6 +832,37 @@ static void arizona_micd_detect(struct work_struct *work)
...
@@ -804,6 +832,37 @@ static void arizona_micd_detect(struct work_struct *work)
return
;
return
;
}
}
if
(
info
->
detecting
&&
arizona
->
pdata
.
micd_software_compare
)
{
/* Must disable MICD before we read the ADCVAL */
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_MIC_DETECT_1
,
ARIZONA_MICD_ENA
,
0
);
ret
=
regmap_read
(
arizona
->
regmap
,
ARIZONA_MIC_DETECT_4
,
&
val
);
if
(
ret
!=
0
)
{
dev_err
(
arizona
->
dev
,
"Failed to read MICDET_ADCVAL: %d
\n
"
,
ret
);
mutex_unlock
(
&
info
->
lock
);
return
;
}
dev_dbg
(
arizona
->
dev
,
"MICDET_ADCVAL: %x
\n
"
,
val
);
val
&=
ARIZONA_MICDET_ADCVAL_MASK
;
if
(
val
<
ARRAY_SIZE
(
arizona_micd_levels
))
val
=
arizona_micd_levels
[
val
];
else
val
=
INT_MAX
;
if
(
val
<=
QUICK_HEADPHONE_MAX_OHM
)
val
=
ARIZONA_MICD_STS
|
ARIZONA_MICD_LVL_0
;
else
if
(
val
<=
MICROPHONE_MIN_OHM
)
val
=
ARIZONA_MICD_STS
|
ARIZONA_MICD_LVL_1
;
else
if
(
val
<=
MICROPHONE_MAX_OHM
)
val
=
ARIZONA_MICD_STS
|
ARIZONA_MICD_LVL_8
;
else
val
=
ARIZONA_MICD_LVL_8
;
}
for
(
i
=
0
;
i
<
10
&&
!
(
val
&
MICD_LVL_0_TO_8
);
i
++
)
{
for
(
i
=
0
;
i
<
10
&&
!
(
val
&
MICD_LVL_0_TO_8
);
i
++
)
{
ret
=
regmap_read
(
arizona
->
regmap
,
ARIZONA_MIC_DETECT_3
,
&
val
);
ret
=
regmap_read
(
arizona
->
regmap
,
ARIZONA_MIC_DETECT_3
,
&
val
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
...
@@ -932,10 +991,17 @@ static void arizona_micd_detect(struct work_struct *work)
...
@@ -932,10 +991,17 @@ static void arizona_micd_detect(struct work_struct *work)
}
}
handled:
handled:
if
(
info
->
detecting
)
if
(
info
->
detecting
)
{
if
(
arizona
->
pdata
.
micd_software_compare
)
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_MIC_DETECT_1
,
ARIZONA_MICD_ENA
,
ARIZONA_MICD_ENA
);
queue_delayed_work
(
system_power_efficient_wq
,
queue_delayed_work
(
system_power_efficient_wq
,
&
info
->
micd_timeout_work
,
&
info
->
micd_timeout_work
,
msecs_to_jiffies
(
info
->
micd_timeout
));
msecs_to_jiffies
(
info
->
micd_timeout
));
}
pm_runtime_mark_last_busy
(
info
->
dev
);
pm_runtime_mark_last_busy
(
info
->
dev
);
mutex_unlock
(
&
info
->
lock
);
mutex_unlock
(
&
info
->
lock
);
...
@@ -991,11 +1057,8 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
...
@@ -991,11 +1057,8 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
mutex_lock
(
&
info
->
lock
);
mutex_lock
(
&
info
->
lock
);
if
(
arizona
->
pdata
.
jd_gpio5
)
{
if
(
info
->
micd_clamp
)
{
mask
=
ARIZONA_MICD_CLAMP_STS
;
mask
=
ARIZONA_MICD_CLAMP_STS
;
if
(
arizona
->
pdata
.
jd_invert
)
present
=
ARIZONA_MICD_CLAMP_STS
;
else
present
=
0
;
present
=
0
;
}
else
{
}
else
{
mask
=
ARIZONA_JD1_STS
;
mask
=
ARIZONA_JD1_STS
;
...
@@ -1055,9 +1118,11 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
...
@@ -1055,9 +1118,11 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
msecs_to_jiffies
(
HPDET_DEBOUNCE
));
msecs_to_jiffies
(
HPDET_DEBOUNCE
));
}
}
if
(
info
->
micd_clamp
||
!
arizona
->
pdata
.
jd_invert
)
regmap_update_bits
(
arizona
->
regmap
,
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_JACK_DETECT_DEBOUNCE
,
ARIZONA_JACK_DETECT_DEBOUNCE
,
ARIZONA_MICD_CLAMP_DB
|
ARIZONA_JD1_DB
,
0
);
ARIZONA_MICD_CLAMP_DB
|
ARIZONA_JD1_DB
,
0
);
}
else
{
}
else
{
dev_dbg
(
arizona
->
dev
,
"Detected jack removal
\n
"
);
dev_dbg
(
arizona
->
dev
,
"Detected jack removal
\n
"
);
...
@@ -1259,6 +1324,10 @@ static int arizona_extcon_probe(struct platform_device *pdev)
...
@@ -1259,6 +1324,10 @@ static int arizona_extcon_probe(struct platform_device *pdev)
info
->
micd_num_modes
=
ARRAY_SIZE
(
micd_default_modes
);
info
->
micd_num_modes
=
ARRAY_SIZE
(
micd_default_modes
);
}
}
if
(
arizona
->
pdata
.
gpsw
>
0
)
regmap_update_bits
(
arizona
->
regmap
,
ARIZONA_GP_SWITCH_1
,
ARIZONA_SW1_MODE_MASK
,
arizona
->
pdata
.
gpsw
);
if
(
arizona
->
pdata
.
micd_pol_gpio
>
0
)
{
if
(
arizona
->
pdata
.
micd_pol_gpio
>
0
)
{
if
(
info
->
micd_modes
[
0
].
gpio
)
if
(
info
->
micd_modes
[
0
].
gpio
)
mode
=
GPIOF_OUT_INIT_HIGH
;
mode
=
GPIOF_OUT_INIT_HIGH
;
...
@@ -1335,7 +1404,8 @@ static int arizona_extcon_probe(struct platform_device *pdev)
...
@@ -1335,7 +1404,8 @@ static int arizona_extcon_probe(struct platform_device *pdev)
break
;
break
;
}
}
BUILD_BUG_ON
(
ARRAY_SIZE
(
arizona_micd_levels
)
!=
0x40
);
BUILD_BUG_ON
(
ARRAY_SIZE
(
arizona_micd_levels
)
<
ARIZONA_NUM_MICD_BUTTON_LEVELS
);
if
(
arizona
->
pdata
.
num_micd_ranges
)
{
if
(
arizona
->
pdata
.
num_micd_ranges
)
{
info
->
micd_ranges
=
pdata
->
micd_ranges
;
info
->
micd_ranges
=
pdata
->
micd_ranges
;
...
@@ -1368,11 +1438,11 @@ static int arizona_extcon_probe(struct platform_device *pdev)
...
@@ -1368,11 +1438,11 @@ static int arizona_extcon_probe(struct platform_device *pdev)
/* Set up all the buttons the user specified */
/* Set up all the buttons the user specified */
for
(
i
=
0
;
i
<
info
->
num_micd_ranges
;
i
++
)
{
for
(
i
=
0
;
i
<
info
->
num_micd_ranges
;
i
++
)
{
for
(
j
=
0
;
j
<
AR
RAY_SIZE
(
arizona_micd_levels
)
;
j
++
)
for
(
j
=
0
;
j
<
AR
IZONA_NUM_MICD_BUTTON_LEVELS
;
j
++
)
if
(
arizona_micd_levels
[
j
]
>=
info
->
micd_ranges
[
i
].
max
)
if
(
arizona_micd_levels
[
j
]
>=
info
->
micd_ranges
[
i
].
max
)
break
;
break
;
if
(
j
==
AR
RAY_SIZE
(
arizona_micd_levels
)
)
{
if
(
j
==
AR
IZONA_NUM_MICD_BUTTON_LEVELS
)
{
dev_err
(
arizona
->
dev
,
"Unsupported MICD level %d
\n
"
,
dev_err
(
arizona
->
dev
,
"Unsupported MICD level %d
\n
"
,
info
->
micd_ranges
[
i
].
max
);
info
->
micd_ranges
[
i
].
max
);
ret
=
-
EINVAL
;
ret
=
-
EINVAL
;
...
@@ -1436,7 +1506,7 @@ static int arizona_extcon_probe(struct platform_device *pdev)
...
@@ -1436,7 +1506,7 @@ static int arizona_extcon_probe(struct platform_device *pdev)
pm_runtime_idle
(
&
pdev
->
dev
);
pm_runtime_idle
(
&
pdev
->
dev
);
pm_runtime_get_sync
(
&
pdev
->
dev
);
pm_runtime_get_sync
(
&
pdev
->
dev
);
if
(
arizona
->
pdata
.
jd_gpio5
)
{
if
(
info
->
micd_clamp
)
{
jack_irq_rise
=
ARIZONA_IRQ_MICD_CLAMP_RISE
;
jack_irq_rise
=
ARIZONA_IRQ_MICD_CLAMP_RISE
;
jack_irq_fall
=
ARIZONA_IRQ_MICD_CLAMP_FALL
;
jack_irq_fall
=
ARIZONA_IRQ_MICD_CLAMP_FALL
;
}
else
{
}
else
{
...
@@ -1541,7 +1611,7 @@ static int arizona_extcon_remove(struct platform_device *pdev)
...
@@ -1541,7 +1611,7 @@ static int arizona_extcon_remove(struct platform_device *pdev)
ARIZONA_MICD_CLAMP_CONTROL
,
ARIZONA_MICD_CLAMP_CONTROL
,
ARIZONA_MICD_CLAMP_MODE_MASK
,
0
);
ARIZONA_MICD_CLAMP_MODE_MASK
,
0
);
if
(
arizona
->
pdata
.
jd_gpio5
)
{
if
(
info
->
micd_clamp
)
{
jack_irq_rise
=
ARIZONA_IRQ_MICD_CLAMP_RISE
;
jack_irq_rise
=
ARIZONA_IRQ_MICD_CLAMP_RISE
;
jack_irq_fall
=
ARIZONA_IRQ_MICD_CLAMP_FALL
;
jack_irq_fall
=
ARIZONA_IRQ_MICD_CLAMP_FALL
;
}
else
{
}
else
{
...
...
drivers/mfd/wm5110-tables.c
View file @
37e57066
...
@@ -1481,6 +1481,7 @@ static const struct reg_default wm5110_reg_default[] = {
...
@@ -1481,6 +1481,7 @@ static const struct reg_default wm5110_reg_default[] = {
{
0x00000C04
,
0xA101
},
/* R3076 - GPIO5 CTRL */
{
0x00000C04
,
0xA101
},
/* R3076 - GPIO5 CTRL */
{
0x00000C0F
,
0x0400
},
/* R3087 - IRQ CTRL 1 */
{
0x00000C0F
,
0x0400
},
/* R3087 - IRQ CTRL 1 */
{
0x00000C10
,
0x1000
},
/* R3088 - GPIO Debounce Config */
{
0x00000C10
,
0x1000
},
/* R3088 - GPIO Debounce Config */
{
0x00000C18
,
0x0000
},
/* R3096 - GP Switch 1 */
{
0x00000C20
,
0x8002
},
/* R3104 - Misc Pad Ctrl 1 */
{
0x00000C20
,
0x8002
},
/* R3104 - Misc Pad Ctrl 1 */
{
0x00000C21
,
0x8001
},
/* R3105 - Misc Pad Ctrl 2 */
{
0x00000C21
,
0x8001
},
/* R3105 - Misc Pad Ctrl 2 */
{
0x00000C22
,
0x0000
},
/* R3106 - Misc Pad Ctrl 3 */
{
0x00000C22
,
0x0000
},
/* R3106 - Misc Pad Ctrl 3 */
...
@@ -1811,6 +1812,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
...
@@ -1811,6 +1812,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
case
ARIZONA_MIC_DETECT_1
:
case
ARIZONA_MIC_DETECT_1
:
case
ARIZONA_MIC_DETECT_2
:
case
ARIZONA_MIC_DETECT_2
:
case
ARIZONA_MIC_DETECT_3
:
case
ARIZONA_MIC_DETECT_3
:
case
ARIZONA_MIC_DETECT_4
:
case
ARIZONA_MIC_DETECT_LEVEL_1
:
case
ARIZONA_MIC_DETECT_LEVEL_1
:
case
ARIZONA_MIC_DETECT_LEVEL_2
:
case
ARIZONA_MIC_DETECT_LEVEL_2
:
case
ARIZONA_MIC_DETECT_LEVEL_3
:
case
ARIZONA_MIC_DETECT_LEVEL_3
:
...
@@ -1910,6 +1912,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
...
@@ -1910,6 +1912,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
case
ARIZONA_HP1_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP1_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP2_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP2_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP3_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP3_SHORT_CIRCUIT_CTRL
:
case
ARIZONA_HP_TEST_CTRL_1
:
case
ARIZONA_AIF1_BCLK_CTRL
:
case
ARIZONA_AIF1_BCLK_CTRL
:
case
ARIZONA_AIF1_TX_PIN_CTRL
:
case
ARIZONA_AIF1_TX_PIN_CTRL
:
case
ARIZONA_AIF1_RX_PIN_CTRL
:
case
ARIZONA_AIF1_RX_PIN_CTRL
:
...
@@ -2527,6 +2530,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
...
@@ -2527,6 +2530,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
case
ARIZONA_GPIO5_CTRL
:
case
ARIZONA_GPIO5_CTRL
:
case
ARIZONA_IRQ_CTRL_1
:
case
ARIZONA_IRQ_CTRL_1
:
case
ARIZONA_GPIO_DEBOUNCE_CONFIG
:
case
ARIZONA_GPIO_DEBOUNCE_CONFIG
:
case
ARIZONA_GP_SWITCH_1
:
case
ARIZONA_MISC_PAD_CTRL_1
:
case
ARIZONA_MISC_PAD_CTRL_1
:
case
ARIZONA_MISC_PAD_CTRL_2
:
case
ARIZONA_MISC_PAD_CTRL_2
:
case
ARIZONA_MISC_PAD_CTRL_3
:
case
ARIZONA_MISC_PAD_CTRL_3
:
...
@@ -2847,12 +2851,14 @@ static bool wm5110_volatile_register(struct device *dev, unsigned int reg)
...
@@ -2847,12 +2851,14 @@ static bool wm5110_volatile_register(struct device *dev, unsigned int reg)
case
ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS
:
case
ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS
:
case
ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS
:
case
ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS
:
case
ARIZONA_MIC_DETECT_3
:
case
ARIZONA_MIC_DETECT_3
:
case
ARIZONA_MIC_DETECT_4
:
case
ARIZONA_HP_CTRL_1L
:
case
ARIZONA_HP_CTRL_1L
:
case
ARIZONA_HP_CTRL_1R
:
case
ARIZONA_HP_CTRL_1R
:
case
ARIZONA_HEADPHONE_DETECT_2
:
case
ARIZONA_HEADPHONE_DETECT_2
:
case
ARIZONA_INPUT_ENABLES_STATUS
:
case
ARIZONA_INPUT_ENABLES_STATUS
:
case
ARIZONA_OUTPUT_STATUS_1
:
case
ARIZONA_OUTPUT_STATUS_1
:
case
ARIZONA_RAW_OUTPUT_STATUS_1
:
case
ARIZONA_RAW_OUTPUT_STATUS_1
:
case
ARIZONA_HP_TEST_CTRL_1
:
case
ARIZONA_SLIMBUS_RX_PORT_STATUS
:
case
ARIZONA_SLIMBUS_RX_PORT_STATUS
:
case
ARIZONA_SLIMBUS_TX_PORT_STATUS
:
case
ARIZONA_SLIMBUS_TX_PORT_STATUS
:
case
ARIZONA_INTERRUPT_STATUS_1
:
case
ARIZONA_INTERRUPT_STATUS_1
:
...
...
include/dt-bindings/mfd/arizona.h
View file @
37e57066
...
@@ -107,5 +107,7 @@
...
@@ -107,5 +107,7 @@
#define ARIZONA_ACCDET_MODE_MIC 0
#define ARIZONA_ACCDET_MODE_MIC 0
#define ARIZONA_ACCDET_MODE_HPL 1
#define ARIZONA_ACCDET_MODE_HPL 1
#define ARIZONA_ACCDET_MODE_HPR 2
#define ARIZONA_ACCDET_MODE_HPR 2
#define ARIZONA_ACCDET_MODE_HPM 4
#define ARIZONA_ACCDET_MODE_ADC 7
#endif
#endif
include/linux/mfd/arizona/pdata.h
View file @
37e57066
...
@@ -124,6 +124,9 @@ struct arizona_pdata {
...
@@ -124,6 +124,9 @@ struct arizona_pdata {
/** Channel to use for headphone detection */
/** Channel to use for headphone detection */
unsigned
int
hpdet_channel
;
unsigned
int
hpdet_channel
;
/** Use software comparison to determine mic presence */
bool
micd_software_compare
;
/** Extra debounce timeout used during initial mic detection (ms) */
/** Extra debounce timeout used during initial mic detection (ms) */
unsigned
int
micd_detect_debounce
;
unsigned
int
micd_detect_debounce
;
...
@@ -181,6 +184,9 @@ struct arizona_pdata {
...
@@ -181,6 +184,9 @@ struct arizona_pdata {
/** GPIO for primary IRQ (used for edge triggered emulation) */
/** GPIO for primary IRQ (used for edge triggered emulation) */
int
irq_gpio
;
int
irq_gpio
;
/** General purpose switch control */
unsigned
int
gpsw
;
};
};
#endif
#endif
include/linux/mfd/arizona/registers.h
View file @
37e57066
...
@@ -242,6 +242,7 @@
...
@@ -242,6 +242,7 @@
#define ARIZONA_HP1_SHORT_CIRCUIT_CTRL 0x4A0
#define ARIZONA_HP1_SHORT_CIRCUIT_CTRL 0x4A0
#define ARIZONA_HP2_SHORT_CIRCUIT_CTRL 0x4A1
#define ARIZONA_HP2_SHORT_CIRCUIT_CTRL 0x4A1
#define ARIZONA_HP3_SHORT_CIRCUIT_CTRL 0x4A2
#define ARIZONA_HP3_SHORT_CIRCUIT_CTRL 0x4A2
#define ARIZONA_HP_TEST_CTRL_1 0x4A4
#define ARIZONA_SPK_CTRL_2 0x4B5
#define ARIZONA_SPK_CTRL_2 0x4B5
#define ARIZONA_SPK_CTRL_3 0x4B6
#define ARIZONA_SPK_CTRL_3 0x4B6
#define ARIZONA_DAC_COMP_1 0x4DC
#define ARIZONA_DAC_COMP_1 0x4DC
...
@@ -2359,9 +2360,9 @@
...
@@ -2359,9 +2360,9 @@
#define ARIZONA_ACCDET_SRC_MASK 0x2000
/* ACCDET_SRC */
#define ARIZONA_ACCDET_SRC_MASK 0x2000
/* ACCDET_SRC */
#define ARIZONA_ACCDET_SRC_SHIFT 13
/* ACCDET_SRC */
#define ARIZONA_ACCDET_SRC_SHIFT 13
/* ACCDET_SRC */
#define ARIZONA_ACCDET_SRC_WIDTH 1
/* ACCDET_SRC */
#define ARIZONA_ACCDET_SRC_WIDTH 1
/* ACCDET_SRC */
#define ARIZONA_ACCDET_MODE_MASK 0x000
3
/* ACCDET_MODE - [1
:0] */
#define ARIZONA_ACCDET_MODE_MASK 0x000
7
/* ACCDET_MODE - [2
:0] */
#define ARIZONA_ACCDET_MODE_SHIFT 0
/* ACCDET_MODE - [
1
:0] */
#define ARIZONA_ACCDET_MODE_SHIFT 0
/* ACCDET_MODE - [
2
:0] */
#define ARIZONA_ACCDET_MODE_WIDTH
2
/* ACCDET_MODE - [1
:0] */
#define ARIZONA_ACCDET_MODE_WIDTH
3
/* ACCDET_MODE - [2
:0] */
/*
/*
* R667 (0x29B) - Headphone Detect 1
* R667 (0x29B) - Headphone Detect 1
...
@@ -3701,6 +3702,13 @@
...
@@ -3701,6 +3702,13 @@
#define ARIZONA_HP3_SC_ENA_SHIFT 12
/* HP3_SC_ENA */
#define ARIZONA_HP3_SC_ENA_SHIFT 12
/* HP3_SC_ENA */
#define ARIZONA_HP3_SC_ENA_WIDTH 1
/* HP3_SC_ENA */
#define ARIZONA_HP3_SC_ENA_WIDTH 1
/* HP3_SC_ENA */
/*
* R1188 (0x4A4) HP Test Ctrl 1
*/
#define ARIZONA_HP1_TST_CAP_SEL_MASK 0x0003
/* HP1_TST_CAP_SEL - [1:0] */
#define ARIZONA_HP1_TST_CAP_SEL_SHIFT 0
/* HP1_TST_CAP_SEL - [1:0] */
#define ARIZONA_HP1_TST_CAP_SEL_WIDTH 2
/* HP1_TST_CAP_SEL - [1:0] */
/*
/*
* R1244 (0x4DC) - DAC comp 1
* R1244 (0x4DC) - DAC comp 1
*/
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment