diff options
author | Lee Jones <lee.jones@linaro.org> | 2014-01-21 03:23:16 -0500 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2014-01-21 03:23:16 -0500 |
commit | 6eb37eb276f0b91adb43b853ce6fb0812fbf0883 (patch) | |
tree | f57e6ddb20a498e57bdc2faf5136879519fda79e | |
parent | ac99a037bce3e6ae16d45ffb26eadbfc518fc143 (diff) | |
parent | 254dc326dbfd23c2678fafad1b84fc0e42ac4374 (diff) |
Merge tag 'tags/ib-asoc-1' into for-mfd-next
Immutable branch for ASoC, as requested by Mark Brown
-rw-r--r-- | drivers/mfd/wm5110-tables.c | 73 | ||||
-rw-r--r-- | include/linux/mfd/arizona/registers.h | 37 | ||||
-rw-r--r-- | sound/soc/codecs/arizona.c | 10 | ||||
-rw-r--r-- | sound/soc/codecs/arizona.h | 1 | ||||
-rw-r--r-- | sound/soc/codecs/wm5110.c | 19 |
5 files changed, 136 insertions, 4 deletions
diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c index d3d753179d65..8dc49ec3b246 100644 --- a/drivers/mfd/wm5110-tables.c +++ b/drivers/mfd/wm5110-tables.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/mfd/arizona/core.h> | 15 | #include <linux/mfd/arizona/core.h> |
16 | #include <linux/mfd/arizona/registers.h> | 16 | #include <linux/mfd/arizona/registers.h> |
17 | #include <linux/device.h> | ||
17 | 18 | ||
18 | #include "arizona.h" | 19 | #include "arizona.h" |
19 | 20 | ||
@@ -524,6 +525,7 @@ static const struct reg_default wm5110_reg_default[] = { | |||
524 | { 0x00000300, 0x0000 }, /* R768 - Input Enables */ | 525 | { 0x00000300, 0x0000 }, /* R768 - Input Enables */ |
525 | { 0x00000308, 0x0000 }, /* R776 - Input Rate */ | 526 | { 0x00000308, 0x0000 }, /* R776 - Input Rate */ |
526 | { 0x00000309, 0x0022 }, /* R777 - Input Volume Ramp */ | 527 | { 0x00000309, 0x0022 }, /* R777 - Input Volume Ramp */ |
528 | { 0x0000030C, 0x0002 }, /* R780 - HPF Control */ | ||
527 | { 0x00000310, 0x2080 }, /* R784 - IN1L Control */ | 529 | { 0x00000310, 0x2080 }, /* R784 - IN1L Control */ |
528 | { 0x00000311, 0x0180 }, /* R785 - ADC Digital Volume 1L */ | 530 | { 0x00000311, 0x0180 }, /* R785 - ADC Digital Volume 1L */ |
529 | { 0x00000312, 0x0000 }, /* R786 - DMIC1L Control */ | 531 | { 0x00000312, 0x0000 }, /* R786 - DMIC1L Control */ |
@@ -545,6 +547,7 @@ static const struct reg_default wm5110_reg_default[] = { | |||
545 | { 0x00000328, 0x2000 }, /* R808 - IN4L Control */ | 547 | { 0x00000328, 0x2000 }, /* R808 - IN4L Control */ |
546 | { 0x00000329, 0x0180 }, /* R809 - ADC Digital Volume 4L */ | 548 | { 0x00000329, 0x0180 }, /* R809 - ADC Digital Volume 4L */ |
547 | { 0x0000032A, 0x0000 }, /* R810 - DMIC4L Control */ | 549 | { 0x0000032A, 0x0000 }, /* R810 - DMIC4L Control */ |
550 | { 0x0000032C, 0x0000 }, /* R812 - IN4R Control */ | ||
548 | { 0x0000032D, 0x0180 }, /* R813 - ADC Digital Volume 4R */ | 551 | { 0x0000032D, 0x0180 }, /* R813 - ADC Digital Volume 4R */ |
549 | { 0x0000032E, 0x0000 }, /* R814 - DMIC4R Control */ | 552 | { 0x0000032E, 0x0000 }, /* R814 - DMIC4R Control */ |
550 | { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ | 553 | { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ |
@@ -1342,6 +1345,64 @@ static const struct reg_default wm5110_reg_default[] = { | |||
1342 | { 0x00001404, 0x0000 }, /* R5124 - DSP4 Status 1 */ | 1345 | { 0x00001404, 0x0000 }, /* R5124 - DSP4 Status 1 */ |
1343 | }; | 1346 | }; |
1344 | 1347 | ||
1348 | static bool wm5110_is_rev_b_adsp_memory(unsigned int reg) | ||
1349 | { | ||
1350 | if ((reg >= 0x100000 && reg < 0x103000) || | ||
1351 | (reg >= 0x180000 && reg < 0x181000) || | ||
1352 | (reg >= 0x190000 && reg < 0x192000) || | ||
1353 | (reg >= 0x1a8000 && reg < 0x1a9000) || | ||
1354 | (reg >= 0x200000 && reg < 0x209000) || | ||
1355 | (reg >= 0x280000 && reg < 0x281000) || | ||
1356 | (reg >= 0x290000 && reg < 0x29a000) || | ||
1357 | (reg >= 0x2a8000 && reg < 0x2aa000) || | ||
1358 | (reg >= 0x300000 && reg < 0x30f000) || | ||
1359 | (reg >= 0x380000 && reg < 0x382000) || | ||
1360 | (reg >= 0x390000 && reg < 0x39e000) || | ||
1361 | (reg >= 0x3a8000 && reg < 0x3b6000) || | ||
1362 | (reg >= 0x400000 && reg < 0x403000) || | ||
1363 | (reg >= 0x480000 && reg < 0x481000) || | ||
1364 | (reg >= 0x490000 && reg < 0x492000) || | ||
1365 | (reg >= 0x4a8000 && reg < 0x4a9000)) | ||
1366 | return true; | ||
1367 | else | ||
1368 | return false; | ||
1369 | } | ||
1370 | |||
1371 | static bool wm5110_is_rev_d_adsp_memory(unsigned int reg) | ||
1372 | { | ||
1373 | if ((reg >= 0x100000 && reg < 0x106000) || | ||
1374 | (reg >= 0x180000 && reg < 0x182000) || | ||
1375 | (reg >= 0x190000 && reg < 0x198000) || | ||
1376 | (reg >= 0x1a8000 && reg < 0x1aa000) || | ||
1377 | (reg >= 0x200000 && reg < 0x20f000) || | ||
1378 | (reg >= 0x280000 && reg < 0x282000) || | ||
1379 | (reg >= 0x290000 && reg < 0x29c000) || | ||
1380 | (reg >= 0x2a6000 && reg < 0x2b4000) || | ||
1381 | (reg >= 0x300000 && reg < 0x30f000) || | ||
1382 | (reg >= 0x380000 && reg < 0x382000) || | ||
1383 | (reg >= 0x390000 && reg < 0x3a2000) || | ||
1384 | (reg >= 0x3a6000 && reg < 0x3b4000) || | ||
1385 | (reg >= 0x400000 && reg < 0x406000) || | ||
1386 | (reg >= 0x480000 && reg < 0x482000) || | ||
1387 | (reg >= 0x490000 && reg < 0x498000) || | ||
1388 | (reg >= 0x4a8000 && reg < 0x4aa000)) | ||
1389 | return true; | ||
1390 | else | ||
1391 | return false; | ||
1392 | } | ||
1393 | |||
1394 | static bool wm5110_is_adsp_memory(struct device *dev, unsigned int reg) | ||
1395 | { | ||
1396 | struct arizona *arizona = dev_get_drvdata(dev); | ||
1397 | |||
1398 | switch (arizona->rev) { | ||
1399 | case 0 ... 2: | ||
1400 | return wm5110_is_rev_b_adsp_memory(reg); | ||
1401 | default: | ||
1402 | return wm5110_is_rev_d_adsp_memory(reg); | ||
1403 | } | ||
1404 | } | ||
1405 | |||
1345 | static bool wm5110_readable_register(struct device *dev, unsigned int reg) | 1406 | static bool wm5110_readable_register(struct device *dev, unsigned int reg) |
1346 | { | 1407 | { |
1347 | switch (reg) { | 1408 | switch (reg) { |
@@ -1460,6 +1521,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg) | |||
1460 | case ARIZONA_INPUT_ENABLES_STATUS: | 1521 | case ARIZONA_INPUT_ENABLES_STATUS: |
1461 | case ARIZONA_INPUT_RATE: | 1522 | case ARIZONA_INPUT_RATE: |
1462 | case ARIZONA_INPUT_VOLUME_RAMP: | 1523 | case ARIZONA_INPUT_VOLUME_RAMP: |
1524 | case ARIZONA_HPF_CONTROL: | ||
1463 | case ARIZONA_IN1L_CONTROL: | 1525 | case ARIZONA_IN1L_CONTROL: |
1464 | case ARIZONA_ADC_DIGITAL_VOLUME_1L: | 1526 | case ARIZONA_ADC_DIGITAL_VOLUME_1L: |
1465 | case ARIZONA_DMIC1L_CONTROL: | 1527 | case ARIZONA_DMIC1L_CONTROL: |
@@ -1481,6 +1543,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg) | |||
1481 | case ARIZONA_IN4L_CONTROL: | 1543 | case ARIZONA_IN4L_CONTROL: |
1482 | case ARIZONA_ADC_DIGITAL_VOLUME_4L: | 1544 | case ARIZONA_ADC_DIGITAL_VOLUME_4L: |
1483 | case ARIZONA_DMIC4L_CONTROL: | 1545 | case ARIZONA_DMIC4L_CONTROL: |
1546 | case ARIZONA_IN4R_CONTROL: | ||
1484 | case ARIZONA_ADC_DIGITAL_VOLUME_4R: | 1547 | case ARIZONA_ADC_DIGITAL_VOLUME_4R: |
1485 | case ARIZONA_DMIC4R_CONTROL: | 1548 | case ARIZONA_DMIC4R_CONTROL: |
1486 | case ARIZONA_OUTPUT_ENABLES_1: | 1549 | case ARIZONA_OUTPUT_ENABLES_1: |
@@ -2331,7 +2394,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg) | |||
2331 | case ARIZONA_DSP4_SCRATCH_3: | 2394 | case ARIZONA_DSP4_SCRATCH_3: |
2332 | return true; | 2395 | return true; |
2333 | default: | 2396 | default: |
2334 | return false; | 2397 | return wm5110_is_adsp_memory(dev, reg); |
2335 | } | 2398 | } |
2336 | } | 2399 | } |
2337 | 2400 | ||
@@ -2407,16 +2470,18 @@ static bool wm5110_volatile_register(struct device *dev, unsigned int reg) | |||
2407 | case ARIZONA_DSP4_SCRATCH_3: | 2470 | case ARIZONA_DSP4_SCRATCH_3: |
2408 | return true; | 2471 | return true; |
2409 | default: | 2472 | default: |
2410 | return false; | 2473 | return wm5110_is_adsp_memory(dev, reg); |
2411 | } | 2474 | } |
2412 | } | 2475 | } |
2413 | 2476 | ||
2477 | #define WM5110_MAX_REGISTER 0x4a9fff | ||
2478 | |||
2414 | const struct regmap_config wm5110_spi_regmap = { | 2479 | const struct regmap_config wm5110_spi_regmap = { |
2415 | .reg_bits = 32, | 2480 | .reg_bits = 32, |
2416 | .pad_bits = 16, | 2481 | .pad_bits = 16, |
2417 | .val_bits = 16, | 2482 | .val_bits = 16, |
2418 | 2483 | ||
2419 | .max_register = ARIZONA_DSP1_STATUS_2, | 2484 | .max_register = WM5110_MAX_REGISTER, |
2420 | .readable_reg = wm5110_readable_register, | 2485 | .readable_reg = wm5110_readable_register, |
2421 | .volatile_reg = wm5110_volatile_register, | 2486 | .volatile_reg = wm5110_volatile_register, |
2422 | 2487 | ||
@@ -2430,7 +2495,7 @@ const struct regmap_config wm5110_i2c_regmap = { | |||
2430 | .reg_bits = 32, | 2495 | .reg_bits = 32, |
2431 | .val_bits = 16, | 2496 | .val_bits = 16, |
2432 | 2497 | ||
2433 | .max_register = ARIZONA_DSP1_STATUS_2, | 2498 | .max_register = WM5110_MAX_REGISTER, |
2434 | .readable_reg = wm5110_readable_register, | 2499 | .readable_reg = wm5110_readable_register, |
2435 | .volatile_reg = wm5110_volatile_register, | 2500 | .volatile_reg = wm5110_volatile_register, |
2436 | 2501 | ||
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h index cb49417f8ba9..b40960d8d365 100644 --- a/include/linux/mfd/arizona/registers.h +++ b/include/linux/mfd/arizona/registers.h | |||
@@ -139,6 +139,7 @@ | |||
139 | #define ARIZONA_INPUT_ENABLES_STATUS 0x301 | 139 | #define ARIZONA_INPUT_ENABLES_STATUS 0x301 |
140 | #define ARIZONA_INPUT_RATE 0x308 | 140 | #define ARIZONA_INPUT_RATE 0x308 |
141 | #define ARIZONA_INPUT_VOLUME_RAMP 0x309 | 141 | #define ARIZONA_INPUT_VOLUME_RAMP 0x309 |
142 | #define ARIZONA_HPF_CONTROL 0x30C | ||
142 | #define ARIZONA_IN1L_CONTROL 0x310 | 143 | #define ARIZONA_IN1L_CONTROL 0x310 |
143 | #define ARIZONA_ADC_DIGITAL_VOLUME_1L 0x311 | 144 | #define ARIZONA_ADC_DIGITAL_VOLUME_1L 0x311 |
144 | #define ARIZONA_DMIC1L_CONTROL 0x312 | 145 | #define ARIZONA_DMIC1L_CONTROL 0x312 |
@@ -160,6 +161,7 @@ | |||
160 | #define ARIZONA_IN4L_CONTROL 0x328 | 161 | #define ARIZONA_IN4L_CONTROL 0x328 |
161 | #define ARIZONA_ADC_DIGITAL_VOLUME_4L 0x329 | 162 | #define ARIZONA_ADC_DIGITAL_VOLUME_4L 0x329 |
162 | #define ARIZONA_DMIC4L_CONTROL 0x32A | 163 | #define ARIZONA_DMIC4L_CONTROL 0x32A |
164 | #define ARIZONA_IN4R_CONTROL 0x32C | ||
163 | #define ARIZONA_ADC_DIGITAL_VOLUME_4R 0x32D | 165 | #define ARIZONA_ADC_DIGITAL_VOLUME_4R 0x32D |
164 | #define ARIZONA_DMIC4R_CONTROL 0x32E | 166 | #define ARIZONA_DMIC4R_CONTROL 0x32E |
165 | #define ARIZONA_OUTPUT_ENABLES_1 0x400 | 167 | #define ARIZONA_OUTPUT_ENABLES_1 0x400 |
@@ -2293,8 +2295,18 @@ | |||
2293 | #define ARIZONA_IN_VI_RAMP_WIDTH 3 /* IN_VI_RAMP - [2:0] */ | 2295 | #define ARIZONA_IN_VI_RAMP_WIDTH 3 /* IN_VI_RAMP - [2:0] */ |
2294 | 2296 | ||
2295 | /* | 2297 | /* |
2298 | * R780 (0x30C) - HPF Control | ||
2299 | */ | ||
2300 | #define ARIZONA_IN_HPF_CUT_MASK 0x0007 /* IN_HPF_CUT [2:0] */ | ||
2301 | #define ARIZONA_IN_HPF_CUT_SHIFT 0 /* IN_HPF_CUT [2:0] */ | ||
2302 | #define ARIZONA_IN_HPF_CUT_WIDTH 3 /* IN_HPF_CUT [2:0] */ | ||
2303 | |||
2304 | /* | ||
2296 | * R784 (0x310) - IN1L Control | 2305 | * R784 (0x310) - IN1L Control |
2297 | */ | 2306 | */ |
2307 | #define ARIZONA_IN1L_HPF_MASK 0x8000 /* IN1L_HPF - [15] */ | ||
2308 | #define ARIZONA_IN1L_HPF_SHIFT 15 /* IN1L_HPF - [15] */ | ||
2309 | #define ARIZONA_IN1L_HPF_WIDTH 1 /* IN1L_HPF - [15] */ | ||
2298 | #define ARIZONA_IN1_OSR_MASK 0x6000 /* IN1_OSR - [14:13] */ | 2310 | #define ARIZONA_IN1_OSR_MASK 0x6000 /* IN1_OSR - [14:13] */ |
2299 | #define ARIZONA_IN1_OSR_SHIFT 13 /* IN1_OSR - [14:13] */ | 2311 | #define ARIZONA_IN1_OSR_SHIFT 13 /* IN1_OSR - [14:13] */ |
2300 | #define ARIZONA_IN1_OSR_WIDTH 2 /* IN1_OSR - [14:13] */ | 2312 | #define ARIZONA_IN1_OSR_WIDTH 2 /* IN1_OSR - [14:13] */ |
@@ -2333,6 +2345,9 @@ | |||
2333 | /* | 2345 | /* |
2334 | * R788 (0x314) - IN1R Control | 2346 | * R788 (0x314) - IN1R Control |
2335 | */ | 2347 | */ |
2348 | #define ARIZONA_IN1R_HPF_MASK 0x8000 /* IN1R_HPF - [15] */ | ||
2349 | #define ARIZONA_IN1R_HPF_SHIFT 15 /* IN1R_HPF - [15] */ | ||
2350 | #define ARIZONA_IN1R_HPF_WIDTH 1 /* IN1R_HPF - [15] */ | ||
2336 | #define ARIZONA_IN1R_PGA_VOL_MASK 0x00FE /* IN1R_PGA_VOL - [7:1] */ | 2351 | #define ARIZONA_IN1R_PGA_VOL_MASK 0x00FE /* IN1R_PGA_VOL - [7:1] */ |
2337 | #define ARIZONA_IN1R_PGA_VOL_SHIFT 1 /* IN1R_PGA_VOL - [7:1] */ | 2352 | #define ARIZONA_IN1R_PGA_VOL_SHIFT 1 /* IN1R_PGA_VOL - [7:1] */ |
2338 | #define ARIZONA_IN1R_PGA_VOL_WIDTH 7 /* IN1R_PGA_VOL - [7:1] */ | 2353 | #define ARIZONA_IN1R_PGA_VOL_WIDTH 7 /* IN1R_PGA_VOL - [7:1] */ |
@@ -2362,6 +2377,9 @@ | |||
2362 | /* | 2377 | /* |
2363 | * R792 (0x318) - IN2L Control | 2378 | * R792 (0x318) - IN2L Control |
2364 | */ | 2379 | */ |
2380 | #define ARIZONA_IN2L_HPF_MASK 0x8000 /* IN2L_HPF - [15] */ | ||
2381 | #define ARIZONA_IN2L_HPF_SHIFT 15 /* IN2L_HPF - [15] */ | ||
2382 | #define ARIZONA_IN2L_HPF_WIDTH 1 /* IN2L_HPF - [15] */ | ||
2365 | #define ARIZONA_IN2_OSR_MASK 0x6000 /* IN2_OSR - [14:13] */ | 2383 | #define ARIZONA_IN2_OSR_MASK 0x6000 /* IN2_OSR - [14:13] */ |
2366 | #define ARIZONA_IN2_OSR_SHIFT 13 /* IN2_OSR - [14:13] */ | 2384 | #define ARIZONA_IN2_OSR_SHIFT 13 /* IN2_OSR - [14:13] */ |
2367 | #define ARIZONA_IN2_OSR_WIDTH 2 /* IN2_OSR - [14:13] */ | 2385 | #define ARIZONA_IN2_OSR_WIDTH 2 /* IN2_OSR - [14:13] */ |
@@ -2400,6 +2418,9 @@ | |||
2400 | /* | 2418 | /* |
2401 | * R796 (0x31C) - IN2R Control | 2419 | * R796 (0x31C) - IN2R Control |
2402 | */ | 2420 | */ |
2421 | #define ARIZONA_IN2R_HPF_MASK 0x8000 /* IN2R_HPF - [15] */ | ||
2422 | #define ARIZONA_IN2R_HPF_SHIFT 15 /* IN2R_HPF - [15] */ | ||
2423 | #define ARIZONA_IN2R_HPF_WIDTH 1 /* IN2R_HPF - [15] */ | ||
2403 | #define ARIZONA_IN2R_PGA_VOL_MASK 0x00FE /* IN2R_PGA_VOL - [7:1] */ | 2424 | #define ARIZONA_IN2R_PGA_VOL_MASK 0x00FE /* IN2R_PGA_VOL - [7:1] */ |
2404 | #define ARIZONA_IN2R_PGA_VOL_SHIFT 1 /* IN2R_PGA_VOL - [7:1] */ | 2425 | #define ARIZONA_IN2R_PGA_VOL_SHIFT 1 /* IN2R_PGA_VOL - [7:1] */ |
2405 | #define ARIZONA_IN2R_PGA_VOL_WIDTH 7 /* IN2R_PGA_VOL - [7:1] */ | 2426 | #define ARIZONA_IN2R_PGA_VOL_WIDTH 7 /* IN2R_PGA_VOL - [7:1] */ |
@@ -2429,6 +2450,9 @@ | |||
2429 | /* | 2450 | /* |
2430 | * R800 (0x320) - IN3L Control | 2451 | * R800 (0x320) - IN3L Control |
2431 | */ | 2452 | */ |
2453 | #define ARIZONA_IN3L_HPF_MASK 0x8000 /* IN3L_HPF - [15] */ | ||
2454 | #define ARIZONA_IN3L_HPF_SHIFT 15 /* IN3L_HPF - [15] */ | ||
2455 | #define ARIZONA_IN3L_HPF_WIDTH 1 /* IN3L_HPF - [15] */ | ||
2432 | #define ARIZONA_IN3_OSR_MASK 0x6000 /* IN3_OSR - [14:13] */ | 2456 | #define ARIZONA_IN3_OSR_MASK 0x6000 /* IN3_OSR - [14:13] */ |
2433 | #define ARIZONA_IN3_OSR_SHIFT 13 /* IN3_OSR - [14:13] */ | 2457 | #define ARIZONA_IN3_OSR_SHIFT 13 /* IN3_OSR - [14:13] */ |
2434 | #define ARIZONA_IN3_OSR_WIDTH 2 /* IN3_OSR - [14:13] */ | 2458 | #define ARIZONA_IN3_OSR_WIDTH 2 /* IN3_OSR - [14:13] */ |
@@ -2467,6 +2491,9 @@ | |||
2467 | /* | 2491 | /* |
2468 | * R804 (0x324) - IN3R Control | 2492 | * R804 (0x324) - IN3R Control |
2469 | */ | 2493 | */ |
2494 | #define ARIZONA_IN3R_HPF_MASK 0x8000 /* IN3R_HPF - [15] */ | ||
2495 | #define ARIZONA_IN3R_HPF_SHIFT 15 /* IN3R_HPF - [15] */ | ||
2496 | #define ARIZONA_IN3R_HPF_WIDTH 1 /* IN3R_HPF - [15] */ | ||
2470 | #define ARIZONA_IN3R_PGA_VOL_MASK 0x00FE /* IN3R_PGA_VOL - [7:1] */ | 2497 | #define ARIZONA_IN3R_PGA_VOL_MASK 0x00FE /* IN3R_PGA_VOL - [7:1] */ |
2471 | #define ARIZONA_IN3R_PGA_VOL_SHIFT 1 /* IN3R_PGA_VOL - [7:1] */ | 2498 | #define ARIZONA_IN3R_PGA_VOL_SHIFT 1 /* IN3R_PGA_VOL - [7:1] */ |
2472 | #define ARIZONA_IN3R_PGA_VOL_WIDTH 7 /* IN3R_PGA_VOL - [7:1] */ | 2499 | #define ARIZONA_IN3R_PGA_VOL_WIDTH 7 /* IN3R_PGA_VOL - [7:1] */ |
@@ -2496,6 +2523,9 @@ | |||
2496 | /* | 2523 | /* |
2497 | * R808 (0x328) - IN4 Control | 2524 | * R808 (0x328) - IN4 Control |
2498 | */ | 2525 | */ |
2526 | #define ARIZONA_IN4L_HPF_MASK 0x8000 /* IN4L_HPF - [15] */ | ||
2527 | #define ARIZONA_IN4L_HPF_SHIFT 15 /* IN4L_HPF - [15] */ | ||
2528 | #define ARIZONA_IN4L_HPF_WIDTH 1 /* IN4L_HPF - [15] */ | ||
2499 | #define ARIZONA_IN4_OSR_MASK 0x6000 /* IN4_OSR - [14:13] */ | 2529 | #define ARIZONA_IN4_OSR_MASK 0x6000 /* IN4_OSR - [14:13] */ |
2500 | #define ARIZONA_IN4_OSR_SHIFT 13 /* IN4_OSR - [14:13] */ | 2530 | #define ARIZONA_IN4_OSR_SHIFT 13 /* IN4_OSR - [14:13] */ |
2501 | #define ARIZONA_IN4_OSR_WIDTH 2 /* IN4_OSR - [14:13] */ | 2531 | #define ARIZONA_IN4_OSR_WIDTH 2 /* IN4_OSR - [14:13] */ |
@@ -2526,6 +2556,13 @@ | |||
2526 | #define ARIZONA_IN4L_DMIC_DLY_WIDTH 6 /* IN4L_DMIC_DLY - [5:0] */ | 2556 | #define ARIZONA_IN4L_DMIC_DLY_WIDTH 6 /* IN4L_DMIC_DLY - [5:0] */ |
2527 | 2557 | ||
2528 | /* | 2558 | /* |
2559 | * R812 (0x32C) - IN4R Control | ||
2560 | */ | ||
2561 | #define ARIZONA_IN4R_HPF_MASK 0x8000 /* IN4R_HPF - [15] */ | ||
2562 | #define ARIZONA_IN4R_HPF_SHIFT 15 /* IN4R_HPF - [15] */ | ||
2563 | #define ARIZONA_IN4R_HPF_WIDTH 1 /* IN4R_HPF - [15] */ | ||
2564 | |||
2565 | /* | ||
2529 | * R813 (0x32D) - ADC Digital Volume 4R | 2566 | * R813 (0x32D) - ADC Digital Volume 4R |
2530 | */ | 2567 | */ |
2531 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | 2568 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ |
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index fea991031be1..f5588bd50051 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c | |||
@@ -560,6 +560,16 @@ const struct soc_enum arizona_ng_hold = | |||
560 | 4, arizona_ng_hold_text); | 560 | 4, arizona_ng_hold_text); |
561 | EXPORT_SYMBOL_GPL(arizona_ng_hold); | 561 | EXPORT_SYMBOL_GPL(arizona_ng_hold); |
562 | 562 | ||
563 | static const char * const arizona_in_hpf_cut_text[] = { | ||
564 | "2.5Hz", "5Hz", "10Hz", "20Hz", "40Hz" | ||
565 | }; | ||
566 | |||
567 | const struct soc_enum arizona_in_hpf_cut_enum = | ||
568 | SOC_ENUM_SINGLE(ARIZONA_HPF_CONTROL, ARIZONA_IN_HPF_CUT_SHIFT, | ||
569 | ARRAY_SIZE(arizona_in_hpf_cut_text), | ||
570 | arizona_in_hpf_cut_text); | ||
571 | EXPORT_SYMBOL_GPL(arizona_in_hpf_cut_enum); | ||
572 | |||
563 | static const char * const arizona_in_dmic_osr_text[] = { | 573 | static const char * const arizona_in_dmic_osr_text[] = { |
564 | "1.536MHz", "3.072MHz", "6.144MHz", | 574 | "1.536MHz", "3.072MHz", "6.144MHz", |
565 | }; | 575 | }; |
diff --git a/sound/soc/codecs/arizona.h b/sound/soc/codecs/arizona.h index 9e81b6392692..f8e63865a1c5 100644 --- a/sound/soc/codecs/arizona.h +++ b/sound/soc/codecs/arizona.h | |||
@@ -199,6 +199,7 @@ extern const struct soc_enum arizona_lhpf3_mode; | |||
199 | extern const struct soc_enum arizona_lhpf4_mode; | 199 | extern const struct soc_enum arizona_lhpf4_mode; |
200 | 200 | ||
201 | extern const struct soc_enum arizona_ng_hold; | 201 | extern const struct soc_enum arizona_ng_hold; |
202 | extern const struct soc_enum arizona_in_hpf_cut_enum; | ||
202 | extern const struct soc_enum arizona_in_dmic_osr[]; | 203 | extern const struct soc_enum arizona_in_dmic_osr[]; |
203 | 204 | ||
204 | extern int arizona_in_ev(struct snd_soc_dapm_widget *w, | 205 | extern int arizona_in_ev(struct snd_soc_dapm_widget *w, |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index 0ab2dc296474..9add6c7b5360 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
@@ -117,6 +117,25 @@ SOC_SINGLE_RANGE_TLV("IN3L Volume", ARIZONA_IN3L_CONTROL, | |||
117 | SOC_SINGLE_RANGE_TLV("IN3R Volume", ARIZONA_IN3R_CONTROL, | 117 | SOC_SINGLE_RANGE_TLV("IN3R Volume", ARIZONA_IN3R_CONTROL, |
118 | ARIZONA_IN3R_PGA_VOL_SHIFT, 0x40, 0x5f, 0, ana_tlv), | 118 | ARIZONA_IN3R_PGA_VOL_SHIFT, 0x40, 0x5f, 0, ana_tlv), |
119 | 119 | ||
120 | SOC_ENUM("IN HPF Cutoff Frequency", arizona_in_hpf_cut_enum), | ||
121 | |||
122 | SOC_SINGLE("IN1L HPF Switch", ARIZONA_IN1L_CONTROL, | ||
123 | ARIZONA_IN1L_HPF_SHIFT, 1, 0), | ||
124 | SOC_SINGLE("IN1R HPF Switch", ARIZONA_IN1R_CONTROL, | ||
125 | ARIZONA_IN1R_HPF_SHIFT, 1, 0), | ||
126 | SOC_SINGLE("IN2L HPF Switch", ARIZONA_IN2L_CONTROL, | ||
127 | ARIZONA_IN2L_HPF_SHIFT, 1, 0), | ||
128 | SOC_SINGLE("IN2R HPF Switch", ARIZONA_IN2R_CONTROL, | ||
129 | ARIZONA_IN2R_HPF_SHIFT, 1, 0), | ||
130 | SOC_SINGLE("IN3L HPF Switch", ARIZONA_IN3L_CONTROL, | ||
131 | ARIZONA_IN3L_HPF_SHIFT, 1, 0), | ||
132 | SOC_SINGLE("IN3R HPF Switch", ARIZONA_IN3R_CONTROL, | ||
133 | ARIZONA_IN3R_HPF_SHIFT, 1, 0), | ||
134 | SOC_SINGLE("IN4L HPF Switch", ARIZONA_IN4L_CONTROL, | ||
135 | ARIZONA_IN4L_HPF_SHIFT, 1, 0), | ||
136 | SOC_SINGLE("IN4R HPF Switch", ARIZONA_IN4R_CONTROL, | ||
137 | ARIZONA_IN4R_HPF_SHIFT, 1, 0), | ||
138 | |||
120 | SOC_SINGLE_TLV("IN1L Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1L, | 139 | SOC_SINGLE_TLV("IN1L Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1L, |
121 | ARIZONA_IN1L_DIG_VOL_SHIFT, 0xbf, 0, digital_tlv), | 140 | ARIZONA_IN1L_DIG_VOL_SHIFT, 0xbf, 0, digital_tlv), |
122 | SOC_SINGLE_TLV("IN1R Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1R, | 141 | SOC_SINGLE_TLV("IN1R Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1R, |