1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2007-2009 ST-Ericsson AB
5 * ABX500 core access functions.
6 * The abx500 interface is used for the Analog Baseband chips.
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>
14 #include <linux/regulator/machine.h>
22 * struct abx500_init_setting
23 * Initial value of the registers for driver to use during setup.
25 struct abx500_init_settings
{
31 int abx500_set_register_interruptible(struct device
*dev
, u8 bank
, u8 reg
,
33 int abx500_get_register_interruptible(struct device
*dev
, u8 bank
, u8 reg
,
35 int abx500_get_register_page_interruptible(struct device
*dev
, u8 bank
,
36 u8 first_reg
, u8
*regvals
, u8 numregs
);
37 int abx500_set_register_page_interruptible(struct device
*dev
, u8 bank
,
38 u8 first_reg
, u8
*regvals
, u8 numregs
);
40 * abx500_mask_and_set_register_inerruptible() - Modifies selected bits of a
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.
48 * Updates the value of an AB register:
49 * value -> ((value & ~bitmask) | (bitvalues & bitmask))
51 int abx500_mask_and_set_register_interruptible(struct device
*dev
, u8 bank
,
52 u8 reg
, u8 bitmask
, u8 bitvalues
);
53 int abx500_get_chip_id(struct device
*dev
);
54 int abx500_event_registers_startup_state_get(struct device
*dev
, u8
*event
);
55 int abx500_startup_irq_enabled(struct device
*dev
, unsigned int irq
);
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
*);
69 int abx500_register_ops(struct device
*core_dev
, struct abx500_ops
*ops
);
70 void abx500_remove_ops(struct device
*dev
);