|
@@ -76,6 +76,14 @@ static bool regmap_volatile_range(struct regmap *map, unsigned int reg,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+static void regmap_format_2_6_write(struct regmap *map,
|
|
|
+ unsigned int reg, unsigned int val)
|
|
|
+{
|
|
|
+ u8 *out = map->work_buf;
|
|
|
+
|
|
|
+ *out = (reg << 6) | val;
|
|
|
+}
|
|
|
+
|
|
|
static void regmap_format_4_12_write(struct regmap *map,
|
|
|
unsigned int reg, unsigned int val)
|
|
|
{
|
|
@@ -180,6 +188,16 @@ struct regmap *regmap_init(struct device *dev,
|
|
|
}
|
|
|
|
|
|
switch (config->reg_bits) {
|
|
|
+ case 2:
|
|
|
+ switch (config->val_bits) {
|
|
|
+ case 6:
|
|
|
+ map->format.format_write = regmap_format_2_6_write;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ goto err_map;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
case 4:
|
|
|
switch (config->val_bits) {
|
|
|
case 12:
|