cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

abx500.h (2401B)


      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