aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mfd/arizona/registers.h37
-rw-r--r--include/linux/regmap.h28
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 */
59struct reg_sequence {
60 unsigned int reg;
61 unsigned int def;
62};
63
53#ifdef CONFIG_REGMAP 64#ifdef CONFIG_REGMAP
54 65
55enum regmap_endian { 66enum 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);
411int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, 422int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
412 size_t val_count); 423 size_t val_count);
413int regmap_multi_reg_write(struct regmap *map, const struct reg_default *regs, 424int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs,
414 int num_regs); 425 int num_regs);
415int regmap_multi_reg_write_bypassed(struct regmap *map, 426int 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);
418int regmap_raw_write_async(struct regmap *map, unsigned int reg, 429int 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);
425int regmap_update_bits(struct regmap *map, unsigned int reg, 436int regmap_update_bits(struct regmap *map, unsigned int reg,
426 unsigned int mask, unsigned int val); 437 unsigned int mask, unsigned int val);
438int regmap_write_bits(struct regmap *map, unsigned int reg,
439 unsigned int mask, unsigned int val);
427int regmap_update_bits_async(struct regmap *map, unsigned int reg, 440int regmap_update_bits_async(struct regmap *map, unsigned int reg,
428 unsigned int mask, unsigned int val); 441 unsigned int mask, unsigned int val);
429int regmap_update_bits_check(struct regmap *map, unsigned int reg, 442int regmap_update_bits_check(struct regmap *map, unsigned int reg,
@@ -450,7 +463,7 @@ void regcache_mark_dirty(struct regmap *map);
450bool regmap_check_range_table(struct regmap *map, unsigned int reg, 463bool 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
453int regmap_register_patch(struct regmap *map, const struct reg_default *regs, 466int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs,
454 int num_regs); 467 int num_regs);
455int regmap_parse_val(struct regmap *map, const void *buf, 468int 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
504int regmap_fields_write(struct regmap_field *field, unsigned int id, 517int regmap_fields_write(struct regmap_field *field, unsigned int id,
505 unsigned int val); 518 unsigned int val);
519int regmap_fields_force_write(struct regmap_field *field, unsigned int id,
520 unsigned int val);
506int regmap_fields_read(struct regmap_field *field, unsigned int id, 521int regmap_fields_read(struct regmap_field *field, unsigned int id,
507 unsigned int *val); 522 unsigned int *val);
508int regmap_fields_update_bits(struct regmap_field *field, unsigned int id, 523int 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
663static 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
648static inline int regmap_update_bits_async(struct regmap *map, 670static 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)