Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: arizona: Split INx_MODE into two fields

Later arizona silicon has the single/differential selector
in a different register, and IN1_MODE only selects between
analogue or digital. Prepare for this by splitting the
INx_MODE definition into two fields.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Richard Fitzgerald and committed by
Lee Jones
fc027d13 121c075c

+28 -12
+6 -2
drivers/mfd/arizona-core.c
··· 1206 1206 /* Default for both is 0 so noop with defaults */ 1207 1207 val = arizona->pdata.dmic_ref[i] 1208 1208 << ARIZONA_IN1_DMIC_SUP_SHIFT; 1209 - val |= arizona->pdata.inmode[i] << ARIZONA_IN1_MODE_SHIFT; 1209 + if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC) 1210 + val |= 1 << ARIZONA_IN1_MODE_SHIFT; 1211 + if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE) 1212 + val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT; 1210 1213 1211 1214 regmap_update_bits(arizona->regmap, 1212 1215 ARIZONA_IN1L_CONTROL + (i * 8), 1213 1216 ARIZONA_IN1_DMIC_SUP_MASK | 1214 - ARIZONA_IN1_MODE_MASK, val); 1217 + ARIZONA_IN1_MODE_MASK | 1218 + ARIZONA_IN1_SINGLE_ENDED_MASK, val); 1215 1219 } 1216 1220 1217 1221 for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) {
+4 -1
include/linux/mfd/arizona/pdata.h
··· 156 156 /** MICBIAS configurations */ 157 157 struct arizona_micbias micbias[ARIZONA_MAX_MICBIAS]; 158 158 159 - /** Mode of input structures */ 159 + /** 160 + * Mode of input structures 161 + * One of the ARIZONA_INMODE_xxx values 162 + */ 160 163 int inmode[ARIZONA_MAX_INPUT]; 161 164 162 165 /** Mode for outputs */
+18 -9
include/linux/mfd/arizona/registers.h
··· 2515 2515 #define ARIZONA_IN1_DMIC_SUP_MASK 0x1800 /* IN1_DMIC_SUP - [12:11] */ 2516 2516 #define ARIZONA_IN1_DMIC_SUP_SHIFT 11 /* IN1_DMIC_SUP - [12:11] */ 2517 2517 #define ARIZONA_IN1_DMIC_SUP_WIDTH 2 /* IN1_DMIC_SUP - [12:11] */ 2518 - #define ARIZONA_IN1_MODE_MASK 0x0600 /* IN1_MODE - [10:9] */ 2519 - #define ARIZONA_IN1_MODE_SHIFT 9 /* IN1_MODE - [10:9] */ 2520 - #define ARIZONA_IN1_MODE_WIDTH 2 /* IN1_MODE - [10:9] */ 2518 + #define ARIZONA_IN1_MODE_MASK 0x0400 /* IN1_MODE - [10] */ 2519 + #define ARIZONA_IN1_MODE_SHIFT 10 /* IN1_MODE - [10] */ 2520 + #define ARIZONA_IN1_MODE_WIDTH 1 /* IN1_MODE - [10] */ 2521 + #define ARIZONA_IN1_SINGLE_ENDED_MASK 0x0200 /* IN1_MODE - [9] */ 2522 + #define ARIZONA_IN1_SINGLE_ENDED_SHIFT 9 /* IN1_MODE - [9] */ 2523 + #define ARIZONA_IN1_SINGLE_ENDED_WIDTH 1 /* IN1_MODE - [9] */ 2521 2524 #define ARIZONA_IN1L_PGA_VOL_MASK 0x00FE /* IN1L_PGA_VOL - [7:1] */ 2522 2525 #define ARIZONA_IN1L_PGA_VOL_SHIFT 1 /* IN1L_PGA_VOL - [7:1] */ 2523 2526 #define ARIZONA_IN1L_PGA_VOL_WIDTH 7 /* IN1L_PGA_VOL - [7:1] */ ··· 2591 2588 #define ARIZONA_IN2_DMIC_SUP_MASK 0x1800 /* IN2_DMIC_SUP - [12:11] */ 2592 2589 #define ARIZONA_IN2_DMIC_SUP_SHIFT 11 /* IN2_DMIC_SUP - [12:11] */ 2593 2590 #define ARIZONA_IN2_DMIC_SUP_WIDTH 2 /* IN2_DMIC_SUP - [12:11] */ 2594 - #define ARIZONA_IN2_MODE_MASK 0x0600 /* IN2_MODE - [10:9] */ 2595 - #define ARIZONA_IN2_MODE_SHIFT 9 /* IN2_MODE - [10:9] */ 2596 - #define ARIZONA_IN2_MODE_WIDTH 2 /* IN2_MODE - [10:9] */ 2591 + #define ARIZONA_IN2_MODE_MASK 0x0400 /* IN2_MODE - [10] */ 2592 + #define ARIZONA_IN2_MODE_SHIFT 10 /* IN2_MODE - [10] */ 2593 + #define ARIZONA_IN2_MODE_WIDTH 1 /* IN2_MODE - [10] */ 2594 + #define ARIZONA_IN2_SINGLE_ENDED_MASK 0x0200 /* IN2_MODE - [9] */ 2595 + #define ARIZONA_IN2_SINGLE_ENDED_SHIFT 9 /* IN2_MODE - [9] */ 2596 + #define ARIZONA_IN2_SINGLE_ENDED_WIDTH 1 /* IN2_MODE - [9] */ 2597 2597 #define ARIZONA_IN2L_PGA_VOL_MASK 0x00FE /* IN2L_PGA_VOL - [7:1] */ 2598 2598 #define ARIZONA_IN2L_PGA_VOL_SHIFT 1 /* IN2L_PGA_VOL - [7:1] */ 2599 2599 #define ARIZONA_IN2L_PGA_VOL_WIDTH 7 /* IN2L_PGA_VOL - [7:1] */ ··· 2667 2661 #define ARIZONA_IN3_DMIC_SUP_MASK 0x1800 /* IN3_DMIC_SUP - [12:11] */ 2668 2662 #define ARIZONA_IN3_DMIC_SUP_SHIFT 11 /* IN3_DMIC_SUP - [12:11] */ 2669 2663 #define ARIZONA_IN3_DMIC_SUP_WIDTH 2 /* IN3_DMIC_SUP - [12:11] */ 2670 - #define ARIZONA_IN3_MODE_MASK 0x0600 /* IN3_MODE - [10:9] */ 2671 - #define ARIZONA_IN3_MODE_SHIFT 9 /* IN3_MODE - [10:9] */ 2672 - #define ARIZONA_IN3_MODE_WIDTH 2 /* IN3_MODE - [10:9] */ 2664 + #define ARIZONA_IN3_MODE_MASK 0x0400 /* IN3_MODE - [10] */ 2665 + #define ARIZONA_IN3_MODE_SHIFT 10 /* IN3_MODE - [10] */ 2666 + #define ARIZONA_IN3_MODE_WIDTH 1 /* IN3_MODE - [10] */ 2667 + #define ARIZONA_IN3_SINGLE_ENDED_MASK 0x0200 /* IN3_MODE - [9] */ 2668 + #define ARIZONA_IN3_SINGLE_ENDED_SHIFT 9 /* IN3_MODE - [9] */ 2669 + #define ARIZONA_IN3_SINGLE_ENDED_WIDTH 1 /* IN3_MODE - [9] */ 2673 2670 #define ARIZONA_IN3L_PGA_VOL_MASK 0x00FE /* IN3L_PGA_VOL - [7:1] */ 2674 2671 #define ARIZONA_IN3L_PGA_VOL_SHIFT 1 /* IN3L_PGA_VOL - [7:1] */ 2675 2672 #define ARIZONA_IN3L_PGA_VOL_WIDTH 7 /* IN3L_PGA_VOL - [7:1] */