aat2870 92 drivers/mfd/aat2870-core.c static int __aat2870_read(struct aat2870_data *aat2870, u8 addr, u8 *val) aat2870 97 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Invalid address, 0x%02x\n", addr); aat2870 101 drivers/mfd/aat2870-core.c if (!aat2870->reg_cache[addr].readable) { aat2870 102 drivers/mfd/aat2870-core.c *val = aat2870->reg_cache[addr].value; aat2870 106 drivers/mfd/aat2870-core.c ret = i2c_master_send(aat2870->client, &addr, 1); aat2870 112 drivers/mfd/aat2870-core.c ret = i2c_master_recv(aat2870->client, val, 1); aat2870 119 drivers/mfd/aat2870-core.c dev_dbg(aat2870->dev, "read: addr=0x%02x, val=0x%02x\n", addr, *val); aat2870 123 drivers/mfd/aat2870-core.c static int __aat2870_write(struct aat2870_data *aat2870, u8 addr, u8 val) aat2870 129 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Invalid address, 0x%02x\n", addr); aat2870 133 drivers/mfd/aat2870-core.c if (!aat2870->reg_cache[addr].writeable) { aat2870 134 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Address 0x%02x is not writeable\n", aat2870 141 drivers/mfd/aat2870-core.c ret = i2c_master_send(aat2870->client, msg, 2); aat2870 147 drivers/mfd/aat2870-core.c aat2870->reg_cache[addr].value = val; aat2870 149 drivers/mfd/aat2870-core.c dev_dbg(aat2870->dev, "write: addr=0x%02x, val=0x%02x\n", addr, val); aat2870 153 drivers/mfd/aat2870-core.c static int aat2870_read(struct aat2870_data *aat2870, u8 addr, u8 *val) aat2870 157 drivers/mfd/aat2870-core.c mutex_lock(&aat2870->io_lock); aat2870 158 drivers/mfd/aat2870-core.c ret = __aat2870_read(aat2870, addr, val); aat2870 159 drivers/mfd/aat2870-core.c mutex_unlock(&aat2870->io_lock); aat2870 164 drivers/mfd/aat2870-core.c static int aat2870_write(struct aat2870_data *aat2870, u8 addr, u8 val) aat2870 168 drivers/mfd/aat2870-core.c mutex_lock(&aat2870->io_lock); aat2870 169 drivers/mfd/aat2870-core.c ret = __aat2870_write(aat2870, addr, val); aat2870 170 drivers/mfd/aat2870-core.c mutex_unlock(&aat2870->io_lock); aat2870 175 drivers/mfd/aat2870-core.c static int aat2870_update(struct aat2870_data *aat2870, u8 addr, u8 mask, aat2870 182 drivers/mfd/aat2870-core.c mutex_lock(&aat2870->io_lock); aat2870 184 drivers/mfd/aat2870-core.c ret = __aat2870_read(aat2870, addr, &old_val); aat2870 191 drivers/mfd/aat2870-core.c ret = __aat2870_write(aat2870, addr, new_val); aat2870 194 drivers/mfd/aat2870-core.c mutex_unlock(&aat2870->io_lock); aat2870 199 drivers/mfd/aat2870-core.c static inline void aat2870_enable(struct aat2870_data *aat2870) aat2870 201 drivers/mfd/aat2870-core.c if (aat2870->en_pin >= 0) aat2870 202 drivers/mfd/aat2870-core.c gpio_set_value(aat2870->en_pin, 1); aat2870 204 drivers/mfd/aat2870-core.c aat2870->is_enable = 1; aat2870 207 drivers/mfd/aat2870-core.c static inline void aat2870_disable(struct aat2870_data *aat2870) aat2870 209 drivers/mfd/aat2870-core.c if (aat2870->en_pin >= 0) aat2870 210 drivers/mfd/aat2870-core.c gpio_set_value(aat2870->en_pin, 0); aat2870 212 drivers/mfd/aat2870-core.c aat2870->is_enable = 0; aat2870 216 drivers/mfd/aat2870-core.c static ssize_t aat2870_dump_reg(struct aat2870_data *aat2870, char *buf) aat2870 228 drivers/mfd/aat2870-core.c ret = aat2870->read(aat2870, addr, &val); aat2870 254 drivers/mfd/aat2870-core.c struct aat2870_data *aat2870 = file->private_data; aat2870 262 drivers/mfd/aat2870-core.c ret = aat2870_dump_reg(aat2870, buf); aat2870 275 drivers/mfd/aat2870-core.c struct aat2870_data *aat2870 = file->private_data; aat2870 284 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Failed to copy from user\n"); aat2870 297 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Invalid address, 0x%lx\n", addr); aat2870 308 drivers/mfd/aat2870-core.c ret = aat2870->write(aat2870, (u8)addr, (u8)val); aat2870 321 drivers/mfd/aat2870-core.c static void aat2870_init_debugfs(struct aat2870_data *aat2870) aat2870 323 drivers/mfd/aat2870-core.c aat2870->dentry_root = debugfs_create_dir("aat2870", NULL); aat2870 325 drivers/mfd/aat2870-core.c debugfs_create_file("regs", 0644, aat2870->dentry_root, aat2870, aat2870 330 drivers/mfd/aat2870-core.c static inline void aat2870_init_debugfs(struct aat2870_data *aat2870) aat2870 339 drivers/mfd/aat2870-core.c struct aat2870_data *aat2870; aat2870 343 drivers/mfd/aat2870-core.c aat2870 = devm_kzalloc(&client->dev, sizeof(struct aat2870_data), aat2870 345 drivers/mfd/aat2870-core.c if (!aat2870) aat2870 348 drivers/mfd/aat2870-core.c aat2870->dev = &client->dev; aat2870 349 drivers/mfd/aat2870-core.c dev_set_drvdata(aat2870->dev, aat2870); aat2870 351 drivers/mfd/aat2870-core.c aat2870->client = client; aat2870 352 drivers/mfd/aat2870-core.c i2c_set_clientdata(client, aat2870); aat2870 354 drivers/mfd/aat2870-core.c aat2870->reg_cache = aat2870_regs; aat2870 357 drivers/mfd/aat2870-core.c aat2870->en_pin = -1; aat2870 359 drivers/mfd/aat2870-core.c aat2870->en_pin = pdata->en_pin; aat2870 361 drivers/mfd/aat2870-core.c aat2870->init = pdata->init; aat2870 362 drivers/mfd/aat2870-core.c aat2870->uninit = pdata->uninit; aat2870 363 drivers/mfd/aat2870-core.c aat2870->read = aat2870_read; aat2870 364 drivers/mfd/aat2870-core.c aat2870->write = aat2870_write; aat2870 365 drivers/mfd/aat2870-core.c aat2870->update = aat2870_update; aat2870 367 drivers/mfd/aat2870-core.c mutex_init(&aat2870->io_lock); aat2870 369 drivers/mfd/aat2870-core.c if (aat2870->init) aat2870 370 drivers/mfd/aat2870-core.c aat2870->init(aat2870); aat2870 372 drivers/mfd/aat2870-core.c if (aat2870->en_pin >= 0) { aat2870 373 drivers/mfd/aat2870-core.c ret = devm_gpio_request_one(&client->dev, aat2870->en_pin, aat2870 377 drivers/mfd/aat2870-core.c "Failed to request GPIO %d\n", aat2870->en_pin); aat2870 382 drivers/mfd/aat2870-core.c aat2870_enable(aat2870); aat2870 396 drivers/mfd/aat2870-core.c ret = mfd_add_devices(aat2870->dev, 0, aat2870_devs, aat2870 399 drivers/mfd/aat2870-core.c dev_err(aat2870->dev, "Failed to add subdev: %d\n", ret); aat2870 403 drivers/mfd/aat2870-core.c aat2870_init_debugfs(aat2870); aat2870 408 drivers/mfd/aat2870-core.c aat2870_disable(aat2870); aat2870 416 drivers/mfd/aat2870-core.c struct aat2870_data *aat2870 = i2c_get_clientdata(client); aat2870 418 drivers/mfd/aat2870-core.c aat2870_disable(aat2870); aat2870 426 drivers/mfd/aat2870-core.c struct aat2870_data *aat2870 = i2c_get_clientdata(client); aat2870 430 drivers/mfd/aat2870-core.c aat2870_enable(aat2870); aat2870 434 drivers/mfd/aat2870-core.c reg = &aat2870->reg_cache[i]; aat2870 436 drivers/mfd/aat2870-core.c aat2870->write(aat2870, i, reg->value); aat2870 20 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870; aat2870 36 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870 = ri->aat2870; aat2870 38 drivers/regulator/aat2870-regulator.c return aat2870->update(aat2870, ri->voltage_addr, ri->voltage_mask, aat2870 45 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870 = ri->aat2870; aat2870 49 drivers/regulator/aat2870-regulator.c ret = aat2870->read(aat2870, ri->voltage_addr, &val); aat2870 59 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870 = ri->aat2870; aat2870 61 drivers/regulator/aat2870-regulator.c return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask, aat2870 68 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870 = ri->aat2870; aat2870 70 drivers/regulator/aat2870-regulator.c return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask, 0); aat2870 76 drivers/regulator/aat2870-regulator.c struct aat2870_data *aat2870 = ri->aat2870; aat2870 80 drivers/regulator/aat2870-regulator.c ret = aat2870->read(aat2870, ri->enable_addr, &val); aat2870 161 drivers/regulator/aat2870-regulator.c ri->aat2870 = dev_get_drvdata(pdev->dev.parent); aat2870 42 drivers/video/backlight/aat2870_bl.c struct aat2870_data *aat2870 aat2870 45 drivers/video/backlight/aat2870_bl.c return aat2870->write(aat2870, AAT2870_BL_CH_EN, aat2870 51 drivers/video/backlight/aat2870_bl.c struct aat2870_data *aat2870 aat2870 54 drivers/video/backlight/aat2870_bl.c return aat2870->write(aat2870, AAT2870_BL_CH_EN, 0x0); aat2870 60 drivers/video/backlight/aat2870_bl.c struct aat2870_data *aat2870 = aat2870 78 drivers/video/backlight/aat2870_bl.c ret = aat2870->write(aat2870, AAT2870_BLM, aat2870 129 include/linux/mfd/aat2870.h int (*init)(struct aat2870_data *aat2870); aat2870 130 include/linux/mfd/aat2870.h void (*uninit)(struct aat2870_data *aat2870); aat2870 133 include/linux/mfd/aat2870.h int (*read)(struct aat2870_data *aat2870, u8 addr, u8 *val); aat2870 134 include/linux/mfd/aat2870.h int (*write)(struct aat2870_data *aat2870, u8 addr, u8 val); aat2870 135 include/linux/mfd/aat2870.h int (*update)(struct aat2870_data *aat2870, u8 addr, u8 mask, u8 val); aat2870 154 include/linux/mfd/aat2870.h int (*init)(struct aat2870_data *aat2870); aat2870 155 include/linux/mfd/aat2870.h void (*uninit)(struct aat2870_data *aat2870);