linux/include/linux/mfd/abx500.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2007-2009 ST-Ericsson AB
   4 *
   5 * ABX500 core access functions.
   6 * The abx500 interface is used for the Analog Baseband chips.
   7 *
   8 * Author: Mattias Wallin <mattias.wallin@stericsson.com>
   9 * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
  10 * Author: Bengt Jonsson <bengt.g.jonsson@stericsson.com>
  11 * Author: Rickard Andersson <rickard.andersson@stericsson.com>
  12 */
  13
  14#include <linux/regulator/machine.h>
  15
  16struct device;
  17
  18#ifndef MFD_ABX500_H
  19#define MFD_ABX500_H
  20
  21/**
  22 * struct abx500_init_setting
  23 * Initial value of the registers for driver to use during setup.
  24 */
  25struct abx500_init_settings {
  26        u8 bank;
  27        u8 reg;
  28        u8 setting;
  29};
  30
  31int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg,
  32        u8 value);
  33int abx500_get_register_interruptible(struct device *dev, u8 bank, u8 reg,
  34        u8 *value);
  35int abx500_get_register_page_interruptible(struct device *dev, u8 bank,
  36        u8 first_reg, u8 *regvals, u8 numregs);
  37int abx500_set_register_page_interruptible(struct device *dev, u8 bank,
  38        u8 first_reg, u8 *regvals, u8 numregs);
  39/**
  40 * abx500_mask_and_set_register_inerruptible() - Modifies selected bits of a
  41 *      target register
  42 *
  43 * @dev: The AB sub device.
  44 * @bank: The i2c bank number.
  45 * @bitmask: The bit mask to use.
  46 * @bitvalues: The new bit values.
  47 *
  48 * Updates the value of an AB register:
  49 * value -> ((value & ~bitmask) | (bitvalues & bitmask))
  50 */
  51int abx500_mask_and_set_register_interruptible(struct device *dev, u8 bank,
  52        u8 reg, u8 bitmask, u8 bitvalues);
  53int abx500_get_chip_id(struct device *dev);
  54int abx500_event_registers_startup_state_get(struct device *dev, u8 *event);
  55int abx500_startup_irq_enabled(struct device *dev, unsigned int irq);
  56
  57struct abx500_ops {
  58        int (*get_chip_id) (struct device *);
  59        int (*get_register) (struct device *, u8, u8, u8 *);
  60        int (*set_register) (struct device *, u8, u8, u8);
  61        int (*get_register_page) (struct device *, u8, u8, u8 *, u8);
  62        int (*set_register_page) (struct device *, u8, u8, u8 *, u8);
  63        int (*mask_and_set_register) (struct device *, u8, u8, u8, u8);
  64        int (*event_registers_startup_state_get) (struct device *, u8 *);
  65        int (*startup_irq_enabled) (struct device *, unsigned int);
  66        void (*dump_all_banks) (struct device *);
  67};
  68
  69int abx500_register_ops(struct device *core_dev, struct abx500_ops *ops);
  70void abx500_remove_ops(struct device *dev);
  71#endif
  72