Commit 2638953f authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'extcon-arizona-v3.10' of...

Merge tag 'extcon-arizona-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/misc into char-misc-next

Mark writes:

	extcon: arizona: Updates for v3.10

	There's a bunch of different things in this series, I can split them out
	if need be:

	 - Support for configuring the button detection circuit to reflect the
	   accessories supplied with the system.
	 - Improvements in the HPDET based detection scheme.
	 - Additional robustness against more pathological use cases.
	 - A few small standalone fixes.
parents 33facb4d 7abd4e2a
This diff is collapsed.
...@@ -331,6 +331,10 @@ static const struct reg_default wm5102_reg_default[] = { ...@@ -331,6 +331,10 @@ static const struct reg_default wm5102_reg_default[] = {
{ 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */
{ 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */
{ 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */
{ 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */
{ 0x000002A7, 0x372C }, /* R679 - Mic Detect Level 2 */
{ 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */
{ 0x000002A9, 0x030A }, /* R681 - Mic Detect Level 4 */
{ 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */ { 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */
{ 0x000002CB, 0x0000 }, /* R715 - Isolation control */ { 0x000002CB, 0x0000 }, /* R715 - Isolation control */
{ 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */
...@@ -1090,6 +1094,10 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) ...@@ -1090,6 +1094,10 @@ static bool wm5102_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_LEVEL_1:
case ARIZONA_MIC_DETECT_LEVEL_2:
case ARIZONA_MIC_DETECT_LEVEL_3:
case ARIZONA_MIC_DETECT_LEVEL_4:
case ARIZONA_MIC_NOISE_MIX_CONTROL_1: case ARIZONA_MIC_NOISE_MIX_CONTROL_1:
case ARIZONA_ISOLATION_CONTROL: case ARIZONA_ISOLATION_CONTROL:
case ARIZONA_JACK_DETECT_ANALOGUE: case ARIZONA_JACK_DETECT_ANALOGUE:
......
...@@ -86,6 +86,11 @@ struct arizona_micd_config { ...@@ -86,6 +86,11 @@ struct arizona_micd_config {
bool gpio; bool gpio;
}; };
struct arizona_micd_range {
int max; /** Ohms */
int key; /** Key to report to input layer */
};
struct arizona_pdata { struct arizona_pdata {
int reset; /** GPIO controlling /RESET, if any */ int reset; /** GPIO controlling /RESET, if any */
int ldoena; /** GPIO controlling LODENA, if any */ int ldoena; /** GPIO controlling LODENA, if any */
...@@ -117,12 +122,21 @@ struct arizona_pdata { ...@@ -117,12 +122,21 @@ struct arizona_pdata {
/** GPIO5 is used for jack detection */ /** GPIO5 is used for jack detection */
bool jd_gpio5; bool jd_gpio5;
/** Internal pull on GPIO5 is disabled when used for jack detection */
bool jd_gpio5_nopull;
/** Use the headphone detect circuit to identify the accessory */ /** Use the headphone detect circuit to identify the accessory */
bool hpdet_acc_id; bool hpdet_acc_id;
/** Check for line output with HPDET method */
bool hpdet_acc_id_line;
/** GPIO used for mic isolation with HPDET */ /** GPIO used for mic isolation with HPDET */
int hpdet_id_gpio; int hpdet_id_gpio;
/** Extra debounce timeout used during initial mic detection (ms) */
int micd_detect_debounce;
/** GPIO for mic detection polarity */ /** GPIO for mic detection polarity */
int micd_pol_gpio; int micd_pol_gpio;
...@@ -135,9 +149,16 @@ struct arizona_pdata { ...@@ -135,9 +149,16 @@ struct arizona_pdata {
/** Mic detect debounce level */ /** Mic detect debounce level */
int micd_dbtime; int micd_dbtime;
/** Mic detect timeout (ms) */
int micd_timeout;
/** Force MICBIAS on for mic detect */ /** Force MICBIAS on for mic detect */
bool micd_force_micbias; bool micd_force_micbias;
/** Mic detect level parameters */
const struct arizona_micd_range *micd_ranges;
int num_micd_ranges;
/** Headset polarity configurations */ /** Headset polarity configurations */
struct arizona_micd_config *micd_configs; struct arizona_micd_config *micd_configs;
int num_micd_configs; int num_micd_configs;
......
...@@ -124,6 +124,10 @@ ...@@ -124,6 +124,10 @@
#define ARIZONA_MIC_DETECT_1 0x2A3 #define ARIZONA_MIC_DETECT_1 0x2A3
#define ARIZONA_MIC_DETECT_2 0x2A4 #define ARIZONA_MIC_DETECT_2 0x2A4
#define ARIZONA_MIC_DETECT_3 0x2A5 #define ARIZONA_MIC_DETECT_3 0x2A5
#define ARIZONA_MIC_DETECT_LEVEL_1 0x2A6
#define ARIZONA_MIC_DETECT_LEVEL_2 0x2A7
#define ARIZONA_MIC_DETECT_LEVEL_3 0x2A8
#define ARIZONA_MIC_DETECT_LEVEL_4 0x2A9
#define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3 #define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3
#define ARIZONA_ISOLATION_CONTROL 0x2CB #define ARIZONA_ISOLATION_CONTROL 0x2CB
#define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3 #define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment