diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mfd/arizona/registers.h | 37 | ||||
| -rw-r--r-- | include/linux/regmap.h | 28 |
2 files changed, 62 insertions, 3 deletions
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h index 5c39dc5d279e..fdd70b3c7418 100644 --- a/include/linux/mfd/arizona/registers.h +++ b/include/linux/mfd/arizona/registers.h | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | #define ARIZONA_PWM_DRIVE_3 0x32 | 39 | #define ARIZONA_PWM_DRIVE_3 0x32 |
| 40 | #define ARIZONA_WAKE_CONTROL 0x40 | 40 | #define ARIZONA_WAKE_CONTROL 0x40 |
| 41 | #define ARIZONA_SEQUENCE_CONTROL 0x41 | 41 | #define ARIZONA_SEQUENCE_CONTROL 0x41 |
| 42 | #define ARIZONA_SPARE_TRIGGERS 0x42 | ||
| 42 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61 | 43 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61 |
| 43 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62 | 44 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62 |
| 44 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63 | 45 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63 |
| @@ -1452,6 +1453,42 @@ | |||
| 1452 | #define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */ | 1453 | #define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */ |
| 1453 | 1454 | ||
| 1454 | /* | 1455 | /* |
| 1456 | * R66 (0x42) - Spare Triggers | ||
| 1457 | */ | ||
| 1458 | #define ARIZONA_WS_TRG8 0x0080 /* WS_TRG8 */ | ||
| 1459 | #define ARIZONA_WS_TRG8_MASK 0x0080 /* WS_TRG8 */ | ||
| 1460 | #define ARIZONA_WS_TRG8_SHIFT 7 /* WS_TRG8 */ | ||
| 1461 | #define ARIZONA_WS_TRG8_WIDTH 1 /* WS_TRG8 */ | ||
| 1462 | #define ARIZONA_WS_TRG7 0x0040 /* WS_TRG7 */ | ||
| 1463 | #define ARIZONA_WS_TRG7_MASK 0x0040 /* WS_TRG7 */ | ||
| 1464 | #define ARIZONA_WS_TRG7_SHIFT 6 /* WS_TRG7 */ | ||
| 1465 | #define ARIZONA_WS_TRG7_WIDTH 1 /* WS_TRG7 */ | ||
| 1466 | #define ARIZONA_WS_TRG6 0x0020 /* WS_TRG6 */ | ||
| 1467 | #define ARIZONA_WS_TRG6_MASK 0x0020 /* WS_TRG6 */ | ||
| 1468 | #define ARIZONA_WS_TRG6_SHIFT 5 /* WS_TRG6 */ | ||
| 1469 | #define ARIZONA_WS_TRG6_WIDTH 1 /* WS_TRG6 */ | ||
| 1470 | #define ARIZONA_WS_TRG5 0x0010 /* WS_TRG5 */ | ||
| 1471 | #define ARIZONA_WS_TRG5_MASK 0x0010 /* WS_TRG5 */ | ||
| 1472 | #define ARIZONA_WS_TRG5_SHIFT 4 /* WS_TRG5 */ | ||
| 1473 | #define ARIZONA_WS_TRG5_WIDTH 1 /* WS_TRG5 */ | ||
| 1474 | #define ARIZONA_WS_TRG4 0x0008 /* WS_TRG4 */ | ||
| 1475 | #define ARIZONA_WS_TRG4_MASK 0x0008 /* WS_TRG4 */ | ||
| 1476 | #define ARIZONA_WS_TRG4_SHIFT 3 /* WS_TRG4 */ | ||
| 1477 | #define ARIZONA_WS_TRG4_WIDTH 1 /* WS_TRG4 */ | ||
| 1478 | #define ARIZONA_WS_TRG3 0x0004 /* WS_TRG3 */ | ||
| 1479 | #define ARIZONA_WS_TRG3_MASK 0x0004 /* WS_TRG3 */ | ||
| 1480 | #define ARIZONA_WS_TRG3_SHIFT 2 /* WS_TRG3 */ | ||
| 1481 | #define ARIZONA_WS_TRG3_WIDTH 1 /* WS_TRG3 */ | ||
| 1482 | #define ARIZONA_WS_TRG2 0x0002 /* WS_TRG2 */ | ||
| 1483 | #define ARIZONA_WS_TRG2_MASK 0x0002 /* WS_TRG2 */ | ||
| 1484 | #define ARIZONA_WS_TRG2_SHIFT 1 /* WS_TRG2 */ | ||
| 1485 | #define ARIZONA_WS_TRG2_WIDTH 1 /* WS_TRG2 */ | ||
| 1486 | #define ARIZONA_WS_TRG1 0x0001 /* WS_TRG1 */ | ||
| 1487 | #define ARIZONA_WS_TRG1_MASK 0x0001 /* WS_TRG1 */ | ||
| 1488 | #define ARIZONA_WS_TRG1_SHIFT 0 /* WS_TRG1 */ | ||
| 1489 | #define ARIZONA_WS_TRG1_WIDTH 1 /* WS_TRG1 */ | ||
| 1490 | |||
| 1491 | /* | ||
| 1455 | * R97 (0x61) - Sample Rate Sequence Select 1 | 1492 | * R97 (0x61) - Sample Rate Sequence Select 1 |
| 1456 | */ | 1493 | */ |
| 1457 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ | 1494 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ |
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 59c55ea0f0b5..4a6759098769 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h | |||
| @@ -50,6 +50,17 @@ struct reg_default { | |||
| 50 | unsigned int def; | 50 | unsigned int def; |
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | /** | ||
| 54 | * Register/value pairs for sequences of writes | ||
| 55 | * | ||
| 56 | * @reg: Register address. | ||
| 57 | * @def: Register value. | ||
| 58 | */ | ||
| 59 | struct reg_sequence { | ||
| 60 | unsigned int reg; | ||
| 61 | unsigned int def; | ||
| 62 | }; | ||
| 63 | |||
| 53 | #ifdef CONFIG_REGMAP | 64 | #ifdef CONFIG_REGMAP |
| 54 | 65 | ||
| 55 | enum regmap_endian { | 66 | enum regmap_endian { |
| @@ -410,10 +421,10 @@ int regmap_raw_write(struct regmap *map, unsigned int reg, | |||
| 410 | const void *val, size_t val_len); | 421 | const void *val, size_t val_len); |
| 411 | int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, | 422 | int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, |
| 412 | size_t val_count); | 423 | size_t val_count); |
| 413 | int regmap_multi_reg_write(struct regmap *map, const struct reg_default *regs, | 424 | int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs, |
| 414 | int num_regs); | 425 | int num_regs); |
| 415 | int regmap_multi_reg_write_bypassed(struct regmap *map, | 426 | int regmap_multi_reg_write_bypassed(struct regmap *map, |
| 416 | const struct reg_default *regs, | 427 | const struct reg_sequence *regs, |
| 417 | int num_regs); | 428 | int num_regs); |
| 418 | int regmap_raw_write_async(struct regmap *map, unsigned int reg, | 429 | int regmap_raw_write_async(struct regmap *map, unsigned int reg, |
| 419 | const void *val, size_t val_len); | 430 | const void *val, size_t val_len); |
| @@ -424,6 +435,8 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val, | |||
| 424 | size_t val_count); | 435 | size_t val_count); |
| 425 | int regmap_update_bits(struct regmap *map, unsigned int reg, | 436 | int regmap_update_bits(struct regmap *map, unsigned int reg, |
| 426 | unsigned int mask, unsigned int val); | 437 | unsigned int mask, unsigned int val); |
| 438 | int regmap_write_bits(struct regmap *map, unsigned int reg, | ||
| 439 | unsigned int mask, unsigned int val); | ||
| 427 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, | 440 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, |
| 428 | unsigned int mask, unsigned int val); | 441 | unsigned int mask, unsigned int val); |
| 429 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, | 442 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, |
| @@ -450,7 +463,7 @@ void regcache_mark_dirty(struct regmap *map); | |||
| 450 | bool regmap_check_range_table(struct regmap *map, unsigned int reg, | 463 | bool regmap_check_range_table(struct regmap *map, unsigned int reg, |
| 451 | const struct regmap_access_table *table); | 464 | const struct regmap_access_table *table); |
| 452 | 465 | ||
| 453 | int regmap_register_patch(struct regmap *map, const struct reg_default *regs, | 466 | int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs, |
| 454 | int num_regs); | 467 | int num_regs); |
| 455 | int regmap_parse_val(struct regmap *map, const void *buf, | 468 | int regmap_parse_val(struct regmap *map, const void *buf, |
| 456 | unsigned int *val); | 469 | unsigned int *val); |
| @@ -503,6 +516,8 @@ int regmap_field_update_bits(struct regmap_field *field, | |||
| 503 | 516 | ||
| 504 | int regmap_fields_write(struct regmap_field *field, unsigned int id, | 517 | int regmap_fields_write(struct regmap_field *field, unsigned int id, |
| 505 | unsigned int val); | 518 | unsigned int val); |
| 519 | int regmap_fields_force_write(struct regmap_field *field, unsigned int id, | ||
| 520 | unsigned int val); | ||
| 506 | int regmap_fields_read(struct regmap_field *field, unsigned int id, | 521 | int regmap_fields_read(struct regmap_field *field, unsigned int id, |
| 507 | unsigned int *val); | 522 | unsigned int *val); |
| 508 | int regmap_fields_update_bits(struct regmap_field *field, unsigned int id, | 523 | int regmap_fields_update_bits(struct regmap_field *field, unsigned int id, |
| @@ -645,6 +660,13 @@ static inline int regmap_update_bits(struct regmap *map, unsigned int reg, | |||
| 645 | return -EINVAL; | 660 | return -EINVAL; |
| 646 | } | 661 | } |
| 647 | 662 | ||
| 663 | static inline int regmap_write_bits(struct regmap *map, unsigned int reg, | ||
| 664 | unsigned int mask, unsigned int val) | ||
| 665 | { | ||
| 666 | WARN_ONCE(1, "regmap API is disabled"); | ||
| 667 | return -EINVAL; | ||
| 668 | } | ||
| 669 | |||
| 648 | static inline int regmap_update_bits_async(struct regmap *map, | 670 | static inline int regmap_update_bits_async(struct regmap *map, |
| 649 | unsigned int reg, | 671 | unsigned int reg, |
| 650 | unsigned int mask, unsigned int val) | 672 | unsigned int mask, unsigned int val) |
