diff options
Diffstat (limited to 'drivers/mfd/wm5102-tables.c')
| -rw-r--r-- | drivers/mfd/wm5102-tables.c | 62 | 
1 files changed, 43 insertions, 19 deletions
diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c index 802dd3cb18c..c8a993bd17a 100644 --- a/drivers/mfd/wm5102-tables.c +++ b/drivers/mfd/wm5102-tables.c @@ -73,6 +73,7 @@ static const struct reg_default wm5102_revb_patch[] = {  	{ 0x171, 0x0000 },  	{ 0x35E, 0x000C },  	{ 0x2D4, 0x0000 }, +	{ 0x4DC, 0x0900 },  	{ 0x80, 0x0000 },  }; @@ -80,8 +81,7 @@ static const struct reg_default wm5102_revb_patch[] = {  int wm5102_patch(struct arizona *arizona)  {  	const struct reg_default *wm5102_patch; -	int ret = 0; -	int i, patch_size; +	int patch_size;  	switch (arizona->rev) {  	case 0: @@ -92,21 +92,9 @@ int wm5102_patch(struct arizona *arizona)  		patch_size = ARRAY_SIZE(wm5102_revb_patch);  	} -	regcache_cache_bypass(arizona->regmap, true); - -	for (i = 0; i < patch_size; i++) { -		ret = regmap_write(arizona->regmap, wm5102_patch[i].reg, -				   wm5102_patch[i].def); -		if (ret != 0) { -			dev_err(arizona->dev, "Failed to write %x = %x: %d\n", -				wm5102_patch[i].reg, wm5102_patch[i].def, ret); -			goto out; -		} -	} - -out: -	regcache_cache_bypass(arizona->regmap, false); -	return ret; +	return regmap_multi_reg_write_bypassed(arizona->regmap, +					       wm5102_patch, +					       patch_size);  }  static const struct regmap_irq wm5102_aod_irqs[ARIZONA_NUM_IRQ] = { @@ -345,7 +333,7 @@ static const struct reg_default wm5102_reg_default[] = {  	{ 0x000001AA, 0x0004 },   /* R426   - FLL2 GPIO Clock */   	{ 0x00000200, 0x0006 },   /* R512   - Mic Charge Pump 1 */   	{ 0x00000210, 0x00D4 },   /* R528   - LDO1 Control 1 */  -	{ 0x00000212, 0x0001 },   /* R530   - LDO1 Control 2 */ +	{ 0x00000212, 0x0000 },   /* R530   - LDO1 Control 2 */  	{ 0x00000213, 0x0344 },   /* R531   - LDO2 Control 1 */   	{ 0x00000218, 0x01A6 },   /* R536   - Mic Bias Ctrl 1 */   	{ 0x00000219, 0x01A6 },   /* R537   - Mic Bias Ctrl 2 */  @@ -903,7 +891,6 @@ static const struct reg_default wm5102_reg_default[] = {  	{ 0x00000D1B, 0xFFFF },   /* R3355  - IRQ2 Status 4 Mask */   	{ 0x00000D1C, 0xFFFF },   /* R3356  - IRQ2 Status 5 Mask */   	{ 0x00000D1F, 0x0000 },   /* R3359  - IRQ2 Control */  -	{ 0x00000D50, 0x0000 },   /* R3408  - AOD wkup and trig */  	{ 0x00000D53, 0xFFFF },   /* R3411  - AOD IRQ Mask IRQ1 */   	{ 0x00000D54, 0xFFFF },   /* R3412  - AOD IRQ Mask IRQ2 */   	{ 0x00000D56, 0x0000 },   /* R3414  - Jack detect debounce */  @@ -1050,6 +1037,8 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)  	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4:  	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5:  	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6: +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_7: +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_8:  	case ARIZONA_COMFORT_NOISE_GENERATOR:  	case ARIZONA_HAPTICS_CONTROL_1:  	case ARIZONA_HAPTICS_CONTROL_2: @@ -1853,6 +1842,23 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)  	case ARIZONA_DSP1_STATUS_1:  	case ARIZONA_DSP1_STATUS_2:  	case ARIZONA_DSP1_STATUS_3: +	case ARIZONA_DSP1_WDMA_BUFFER_1: +	case ARIZONA_DSP1_WDMA_BUFFER_2: +	case ARIZONA_DSP1_WDMA_BUFFER_3: +	case ARIZONA_DSP1_WDMA_BUFFER_4: +	case ARIZONA_DSP1_WDMA_BUFFER_5: +	case ARIZONA_DSP1_WDMA_BUFFER_6: +	case ARIZONA_DSP1_WDMA_BUFFER_7: +	case ARIZONA_DSP1_WDMA_BUFFER_8: +	case ARIZONA_DSP1_RDMA_BUFFER_1: +	case ARIZONA_DSP1_RDMA_BUFFER_2: +	case ARIZONA_DSP1_RDMA_BUFFER_3: +	case ARIZONA_DSP1_RDMA_BUFFER_4: +	case ARIZONA_DSP1_RDMA_BUFFER_5: +	case ARIZONA_DSP1_RDMA_BUFFER_6: +	case ARIZONA_DSP1_WDMA_CONFIG_1: +	case ARIZONA_DSP1_WDMA_CONFIG_2: +	case ARIZONA_DSP1_RDMA_CONFIG_1:  	case ARIZONA_DSP1_SCRATCH_0:  	case ARIZONA_DSP1_SCRATCH_1:  	case ARIZONA_DSP1_SCRATCH_2: @@ -1908,9 +1914,27 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)  	case ARIZONA_AOD_IRQ1:  	case ARIZONA_AOD_IRQ2:  	case ARIZONA_AOD_IRQ_RAW_STATUS: +	case ARIZONA_DSP1_CLOCKING_1:  	case ARIZONA_DSP1_STATUS_1:  	case ARIZONA_DSP1_STATUS_2:  	case ARIZONA_DSP1_STATUS_3: +	case ARIZONA_DSP1_WDMA_BUFFER_1: +	case ARIZONA_DSP1_WDMA_BUFFER_2: +	case ARIZONA_DSP1_WDMA_BUFFER_3: +	case ARIZONA_DSP1_WDMA_BUFFER_4: +	case ARIZONA_DSP1_WDMA_BUFFER_5: +	case ARIZONA_DSP1_WDMA_BUFFER_6: +	case ARIZONA_DSP1_WDMA_BUFFER_7: +	case ARIZONA_DSP1_WDMA_BUFFER_8: +	case ARIZONA_DSP1_RDMA_BUFFER_1: +	case ARIZONA_DSP1_RDMA_BUFFER_2: +	case ARIZONA_DSP1_RDMA_BUFFER_3: +	case ARIZONA_DSP1_RDMA_BUFFER_4: +	case ARIZONA_DSP1_RDMA_BUFFER_5: +	case ARIZONA_DSP1_RDMA_BUFFER_6: +	case ARIZONA_DSP1_WDMA_CONFIG_1: +	case ARIZONA_DSP1_WDMA_CONFIG_2: +	case ARIZONA_DSP1_RDMA_CONFIG_1:  	case ARIZONA_DSP1_SCRATCH_0:  	case ARIZONA_DSP1_SCRATCH_1:  	case ARIZONA_DSP1_SCRATCH_2:  | 
