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

aat2870.h (4014B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * linux/include/linux/mfd/aat2870.h
      4 *
      5 * Copyright (c) 2011, NVIDIA Corporation.
      6 * Author: Jin Park <jinyoungp@nvidia.com>
      7 */
      8
      9#ifndef __LINUX_MFD_AAT2870_H
     10#define __LINUX_MFD_AAT2870_H
     11
     12#include <linux/debugfs.h>
     13#include <linux/i2c.h>
     14
     15/* Register offsets */
     16#define AAT2870_BL_CH_EN	0x00
     17#define AAT2870_BLM		0x01
     18#define AAT2870_BLS		0x02
     19#define AAT2870_BL1		0x03
     20#define AAT2870_BL2		0x04
     21#define AAT2870_BL3		0x05
     22#define AAT2870_BL4		0x06
     23#define AAT2870_BL5		0x07
     24#define AAT2870_BL6		0x08
     25#define AAT2870_BL7		0x09
     26#define AAT2870_BL8		0x0A
     27#define AAT2870_FLR		0x0B
     28#define AAT2870_FM		0x0C
     29#define AAT2870_FS		0x0D
     30#define AAT2870_ALS_CFG0	0x0E
     31#define AAT2870_ALS_CFG1	0x0F
     32#define AAT2870_ALS_CFG2	0x10
     33#define AAT2870_AMB		0x11
     34#define AAT2870_ALS0		0x12
     35#define AAT2870_ALS1		0x13
     36#define AAT2870_ALS2		0x14
     37#define AAT2870_ALS3		0x15
     38#define AAT2870_ALS4		0x16
     39#define AAT2870_ALS5		0x17
     40#define AAT2870_ALS6		0x18
     41#define AAT2870_ALS7		0x19
     42#define AAT2870_ALS8		0x1A
     43#define AAT2870_ALS9		0x1B
     44#define AAT2870_ALSA		0x1C
     45#define AAT2870_ALSB		0x1D
     46#define AAT2870_ALSC		0x1E
     47#define AAT2870_ALSD		0x1F
     48#define AAT2870_ALSE		0x20
     49#define AAT2870_ALSF		0x21
     50#define AAT2870_SUB_SET		0x22
     51#define AAT2870_SUB_CTRL	0x23
     52#define AAT2870_LDO_AB		0x24
     53#define AAT2870_LDO_CD		0x25
     54#define AAT2870_LDO_EN		0x26
     55#define AAT2870_REG_NUM		0x27
     56
     57/* Device IDs */
     58enum aat2870_id {
     59	AAT2870_ID_BL,
     60	AAT2870_ID_LDOA,
     61	AAT2870_ID_LDOB,
     62	AAT2870_ID_LDOC,
     63	AAT2870_ID_LDOD
     64};
     65
     66/* Backlight channels */
     67#define AAT2870_BL_CH1		0x01
     68#define AAT2870_BL_CH2		0x02
     69#define AAT2870_BL_CH3		0x04
     70#define AAT2870_BL_CH4		0x08
     71#define AAT2870_BL_CH5		0x10
     72#define AAT2870_BL_CH6		0x20
     73#define AAT2870_BL_CH7		0x40
     74#define AAT2870_BL_CH8		0x80
     75#define AAT2870_BL_CH_ALL	0xFF
     76
     77/* Backlight current magnitude (mA) */
     78enum aat2870_current {
     79	AAT2870_CURRENT_0_45 = 1,
     80	AAT2870_CURRENT_0_90,
     81	AAT2870_CURRENT_1_80,
     82	AAT2870_CURRENT_2_70,
     83	AAT2870_CURRENT_3_60,
     84	AAT2870_CURRENT_4_50,
     85	AAT2870_CURRENT_5_40,
     86	AAT2870_CURRENT_6_30,
     87	AAT2870_CURRENT_7_20,
     88	AAT2870_CURRENT_8_10,
     89	AAT2870_CURRENT_9_00,
     90	AAT2870_CURRENT_9_90,
     91	AAT2870_CURRENT_10_8,
     92	AAT2870_CURRENT_11_7,
     93	AAT2870_CURRENT_12_6,
     94	AAT2870_CURRENT_13_5,
     95	AAT2870_CURRENT_14_4,
     96	AAT2870_CURRENT_15_3,
     97	AAT2870_CURRENT_16_2,
     98	AAT2870_CURRENT_17_1,
     99	AAT2870_CURRENT_18_0,
    100	AAT2870_CURRENT_18_9,
    101	AAT2870_CURRENT_19_8,
    102	AAT2870_CURRENT_20_7,
    103	AAT2870_CURRENT_21_6,
    104	AAT2870_CURRENT_22_5,
    105	AAT2870_CURRENT_23_4,
    106	AAT2870_CURRENT_24_3,
    107	AAT2870_CURRENT_25_2,
    108	AAT2870_CURRENT_26_1,
    109	AAT2870_CURRENT_27_0,
    110	AAT2870_CURRENT_27_9
    111};
    112
    113struct aat2870_register {
    114	bool readable;
    115	bool writeable;
    116	u8 value;
    117};
    118
    119struct aat2870_data {
    120	struct device *dev;
    121	struct i2c_client *client;
    122
    123	struct mutex io_lock;
    124	struct aat2870_register *reg_cache; /* register cache */
    125	int en_pin; /* enable GPIO pin (if < 0, ignore this value) */
    126	bool is_enable;
    127
    128	/* init and uninit for platform specified */
    129	int (*init)(struct aat2870_data *aat2870);
    130	void (*uninit)(struct aat2870_data *aat2870);
    131
    132	/* i2c io funcntions */
    133	int (*read)(struct aat2870_data *aat2870, u8 addr, u8 *val);
    134	int (*write)(struct aat2870_data *aat2870, u8 addr, u8 val);
    135	int (*update)(struct aat2870_data *aat2870, u8 addr, u8 mask, u8 val);
    136
    137	/* for debugfs */
    138	struct dentry *dentry_root;
    139};
    140
    141struct aat2870_subdev_info {
    142	int id;
    143	const char *name;
    144	void *platform_data;
    145};
    146
    147struct aat2870_platform_data {
    148	int en_pin; /* enable GPIO pin (if < 0, ignore this value) */
    149
    150	struct aat2870_subdev_info *subdevs;
    151	int num_subdevs;
    152
    153	/* init and uninit for platform specified */
    154	int (*init)(struct aat2870_data *aat2870);
    155	void (*uninit)(struct aat2870_data *aat2870);
    156};
    157
    158struct aat2870_bl_platform_data {
    159	/* backlight channels, default is AAT2870_BL_CH_ALL */
    160	int channels;
    161	/* backlight current magnitude, default is AAT2870_CURRENT_27_9 */
    162	int max_current;
    163	/* maximum brightness, default is 255 */
    164	int max_brightness;
    165};
    166
    167#endif /* __LINUX_MFD_AAT2870_H */