Lines Matching +full:data +full:- +full:addr
1 // SPDX-License-Identifier: GPL-2.0
3 // Register map access API - SPMI support
5 // Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
7 // Based on regmap-i2c.c:
20 u8 addr = *(u8 *)reg; in regmap_spmi_base_read() local
25 while (val_size-- && !err) in regmap_spmi_base_read()
26 err = spmi_register_read(context, addr++, val++); in regmap_spmi_base_read()
35 const u8 *data = val; in regmap_spmi_base_gather_write() local
36 u8 addr = *(u8 *)reg; in regmap_spmi_base_gather_write() local
42 * SPMI defines a more bandwidth-efficient 'Register 0 Write' sequence, in regmap_spmi_base_gather_write()
45 if (addr == 0 && val_size) { in regmap_spmi_base_gather_write()
46 err = spmi_register_zero_write(context, *data); in regmap_spmi_base_gather_write()
50 data++; in regmap_spmi_base_gather_write()
51 addr++; in regmap_spmi_base_gather_write()
52 val_size--; in regmap_spmi_base_gather_write()
56 err = spmi_register_write(context, addr, *data); in regmap_spmi_base_gather_write()
60 data++; in regmap_spmi_base_gather_write()
61 addr++; in regmap_spmi_base_gather_write()
62 val_size--; in regmap_spmi_base_gather_write()
69 static int regmap_spmi_base_write(void *context, const void *data, in regmap_spmi_base_write() argument
73 return regmap_spmi_base_gather_write(context, data, 1, data + 1, in regmap_spmi_base_write()
74 count - 1); in regmap_spmi_base_write()
90 return __regmap_init(&sdev->dev, ®map_spmi_base, sdev, config, in __regmap_init_spmi_base()
100 return __devm_regmap_init(&sdev->dev, ®map_spmi_base, sdev, config, in __devm_regmap_init_spmi_base()
111 u16 addr; in regmap_spmi_ext_read() local
115 addr = *(u16 *)reg; in regmap_spmi_ext_read()
119 * bandwidth-efficient 'Extended Register Read' command when possible in regmap_spmi_ext_read()
121 while (addr <= 0xFF && val_size) { in regmap_spmi_ext_read()
124 err = spmi_ext_register_read(context, addr, val, len); in regmap_spmi_ext_read()
128 addr += len; in regmap_spmi_ext_read()
130 val_size -= len; in regmap_spmi_ext_read()
136 err = spmi_ext_register_readl(context, addr, val, len); in regmap_spmi_ext_read()
140 addr += len; in regmap_spmi_ext_read()
142 val_size -= len; in regmap_spmi_ext_read()
155 u16 addr; in regmap_spmi_ext_gather_write() local
159 addr = *(u16 *)reg; in regmap_spmi_ext_gather_write()
161 while (addr <= 0xFF && val_size) { in regmap_spmi_ext_gather_write()
164 err = spmi_ext_register_write(context, addr, val, len); in regmap_spmi_ext_gather_write()
168 addr += len; in regmap_spmi_ext_gather_write()
170 val_size -= len; in regmap_spmi_ext_gather_write()
176 err = spmi_ext_register_writel(context, addr, val, len); in regmap_spmi_ext_gather_write()
180 addr += len; in regmap_spmi_ext_gather_write()
182 val_size -= len; in regmap_spmi_ext_gather_write()
189 static int regmap_spmi_ext_write(void *context, const void *data, in regmap_spmi_ext_write() argument
193 return regmap_spmi_ext_gather_write(context, data, 2, data + 2, in regmap_spmi_ext_write()
194 count - 2); in regmap_spmi_ext_write()
210 return __regmap_init(&sdev->dev, ®map_spmi_ext, sdev, config, in __regmap_init_spmi_ext()
220 return __devm_regmap_init(&sdev->dev, ®map_spmi_ext, sdev, config, in __devm_regmap_init_spmi_ext()
225 MODULE_DESCRIPTION("Register map access API - SPMI support");