Merge branches 'acpi-soc', 'acpi-misc', 'acpi-pci' and 'device-properties'
[deliverable/linux.git] / include / linux / regmap.h
index 18394343f4891a42dc986e4a17e9c9ebb0b747ee..3dc08ce15426e67eff3cd1c785544c6877603e97 100644 (file)
@@ -65,6 +65,36 @@ struct reg_sequence {
        unsigned int delay_us;
 };
 
+#define        regmap_update_bits(map, reg, mask, val) \
+       regmap_update_bits_base(map, reg, mask, val, NULL, false, false)
+#define        regmap_update_bits_async(map, reg, mask, val)\
+       regmap_update_bits_base(map, reg, mask, val, NULL, true, false)
+#define        regmap_update_bits_check(map, reg, mask, val, change)\
+       regmap_update_bits_base(map, reg, mask, val, change, false, false)
+#define        regmap_update_bits_check_async(map, reg, mask, val, change)\
+       regmap_update_bits_base(map, reg, mask, val, change, true, false)
+
+#define        regmap_write_bits(map, reg, mask, val) \
+       regmap_update_bits_base(map, reg, mask, val, NULL, false, true)
+
+#define        regmap_field_write(field, val) \
+       regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
+#define        regmap_field_force_write(field, val) \
+       regmap_field_update_bits_base(field, ~0, val, NULL, false, true)
+#define        regmap_field_update_bits(field, mask, val)\
+       regmap_field_update_bits_base(field, mask, val, NULL, false, false)
+#define        regmap_field_force_update_bits(field, mask, val) \
+       regmap_field_update_bits_base(field, mask, val, NULL, false, true)
+
+#define        regmap_fields_write(field, id, val) \
+       regmap_fields_update_bits_base(field, id, ~0, val, NULL, false, false)
+#define        regmap_fields_force_write(field, id, val) \
+       regmap_fields_update_bits_base(field, id, ~0, val, NULL, false, true)
+#define        regmap_fields_update_bits(field, id, mask, val)\
+       regmap_fields_update_bits_base(field, id, mask, val, NULL, false, false)
+#define        regmap_fields_force_update_bits(field, id, mask, val) \
+       regmap_fields_update_bits_base(field, id, mask, val, NULL, false, true)
+
 #ifdef CONFIG_REGMAP
 
 enum regmap_endian {
@@ -162,7 +192,7 @@ typedef void (*regmap_unlock)(void *);
  *               This field is a duplicate of a similar file in
  *               'struct regmap_bus' and serves exact same purpose.
  *                Use it only for "no-bus" cases.
- * @max_register: Optional, specifies the maximum valid register index.
+ * @max_register: Optional, specifies the maximum valid register address.
  * @wr_table:     Optional, points to a struct regmap_access_table specifying
  *                valid ranges for write access.
  * @rd_table:     As above, for read access.
@@ -691,18 +721,9 @@ int regmap_raw_read(struct regmap *map, unsigned int reg,
                    void *val, size_t val_len);
 int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
                     size_t val_count);
-int regmap_update_bits(struct regmap *map, unsigned int reg,
-                      unsigned int mask, unsigned int val);
-int regmap_write_bits(struct regmap *map, unsigned int reg,
-                      unsigned int mask, unsigned int val);
-int regmap_update_bits_async(struct regmap *map, unsigned int reg,
-                            unsigned int mask, unsigned int val);
-int regmap_update_bits_check(struct regmap *map, unsigned int reg,
-                            unsigned int mask, unsigned int val,
-                            bool *change);
-int regmap_update_bits_check_async(struct regmap *map, unsigned int reg,
-                                  unsigned int mask, unsigned int val,
-                                  bool *change);
+int regmap_update_bits_base(struct regmap *map, unsigned int reg,
+                           unsigned int mask, unsigned int val,
+                           bool *change, bool async, bool force);
 int regmap_get_val_bytes(struct regmap *map);
 int regmap_get_max_register(struct regmap *map);
 int regmap_get_reg_stride(struct regmap *map);
@@ -770,18 +791,14 @@ struct regmap_field *devm_regmap_field_alloc(struct device *dev,
 void devm_regmap_field_free(struct device *dev,        struct regmap_field *field);
 
 int regmap_field_read(struct regmap_field *field, unsigned int *val);
-int regmap_field_write(struct regmap_field *field, unsigned int val);
-int regmap_field_update_bits(struct regmap_field *field,
-                            unsigned int mask, unsigned int val);
-
-int regmap_fields_write(struct regmap_field *field, unsigned int id,
-                       unsigned int val);
-int regmap_fields_force_write(struct regmap_field *field, unsigned int id,
-                       unsigned int val);
+int regmap_field_update_bits_base(struct regmap_field *field,
+                                 unsigned int mask, unsigned int val,
+                                 bool *change, bool async, bool force);
 int regmap_fields_read(struct regmap_field *field, unsigned int id,
                       unsigned int *val);
-int regmap_fields_update_bits(struct regmap_field *field,  unsigned int id,
-                             unsigned int mask, unsigned int val);
+int regmap_fields_update_bits_base(struct regmap_field *field,  unsigned int id,
+                                  unsigned int mask, unsigned int val,
+                                  bool *change, bool async, bool force);
 
 /**
  * Description of an IRQ for the generic regmap irq_chip.
@@ -868,6 +885,14 @@ int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,
                        int irq_base, const struct regmap_irq_chip *chip,
                        struct regmap_irq_chip_data **data);
 void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *data);
+
+int devm_regmap_add_irq_chip(struct device *dev, struct regmap *map, int irq,
+                            int irq_flags, int irq_base,
+                            const struct regmap_irq_chip *chip,
+                            struct regmap_irq_chip_data **data);
+void devm_regmap_del_irq_chip(struct device *dev, int irq,
+                             struct regmap_irq_chip_data *data);
+
 int regmap_irq_chip_get_base(struct regmap_irq_chip_data *data);
 int regmap_irq_get_virq(struct regmap_irq_chip_data *data, int irq);
 struct irq_domain *regmap_irq_get_domain(struct regmap_irq_chip_data *data);
@@ -937,42 +962,26 @@ static inline int regmap_bulk_read(struct regmap *map, unsigned int reg,
        return -EINVAL;
 }
 
-static inline int regmap_update_bits(struct regmap *map, unsigned int reg,
-                                    unsigned int mask, unsigned int val)
-{
-       WARN_ONCE(1, "regmap API is disabled");
-       return -EINVAL;
-}
-
-static inline int regmap_write_bits(struct regmap *map, unsigned int reg,
-                                    unsigned int mask, unsigned int val)
-{
-       WARN_ONCE(1, "regmap API is disabled");
-       return -EINVAL;
-}
-
-static inline int regmap_update_bits_async(struct regmap *map,
-                                          unsigned int reg,
-                                          unsigned int mask, unsigned int val)
+static inline int regmap_update_bits_base(struct regmap *map, unsigned int reg,
+                                         unsigned int mask, unsigned int val,
+                                         bool *change, bool async, bool force)
 {
        WARN_ONCE(1, "regmap API is disabled");
        return -EINVAL;
 }
 
-static inline int regmap_update_bits_check(struct regmap *map,
-                                          unsigned int reg,
-                                          unsigned int mask, unsigned int val,
-                                          bool *change)
+static inline int regmap_field_update_bits_base(struct regmap_field *field,
+                                       unsigned int mask, unsigned int val,
+                                       bool *change, bool async, bool force)
 {
        WARN_ONCE(1, "regmap API is disabled");
        return -EINVAL;
 }
 
-static inline int regmap_update_bits_check_async(struct regmap *map,
-                                                unsigned int reg,
-                                                unsigned int mask,
-                                                unsigned int val,
-                                                bool *change)
+static inline int regmap_fields_update_bits_base(struct regmap_field *field,
+                                  unsigned int id,
+                                  unsigned int mask, unsigned int val,
+                                  bool *change, bool async, bool force)
 {
        WARN_ONCE(1, "regmap API is disabled");
        return -EINVAL;
This page took 0.029118 seconds and 5 git commands to generate.