cregit-Linux how code gets into the kernel

Release 4.12 include/linux/mfd/aat2870.h

/*
 * linux/include/linux/mfd/aat2870.h
 *
 * Copyright (c) 2011, NVIDIA Corporation.
 * Author: Jin Park <jinyoungp@nvidia.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 */

#ifndef __LINUX_MFD_AAT2870_H

#define __LINUX_MFD_AAT2870_H

#include <linux/debugfs.h>
#include <linux/i2c.h>

/* Register offsets */

#define AAT2870_BL_CH_EN	0x00

#define AAT2870_BLM		0x01

#define AAT2870_BLS		0x02

#define AAT2870_BL1		0x03

#define AAT2870_BL2		0x04

#define AAT2870_BL3		0x05

#define AAT2870_BL4		0x06

#define AAT2870_BL5		0x07

#define AAT2870_BL6		0x08

#define AAT2870_BL7		0x09

#define AAT2870_BL8		0x0A

#define AAT2870_FLR		0x0B

#define AAT2870_FM		0x0C

#define AAT2870_FS		0x0D

#define AAT2870_ALS_CFG0	0x0E

#define AAT2870_ALS_CFG1	0x0F

#define AAT2870_ALS_CFG2	0x10

#define AAT2870_AMB		0x11

#define AAT2870_ALS0		0x12

#define AAT2870_ALS1		0x13

#define AAT2870_ALS2		0x14

#define AAT2870_ALS3		0x15

#define AAT2870_ALS4		0x16

#define AAT2870_ALS5		0x17

#define AAT2870_ALS6		0x18

#define AAT2870_ALS7		0x19

#define AAT2870_ALS8		0x1A

#define AAT2870_ALS9		0x1B

#define AAT2870_ALSA		0x1C

#define AAT2870_ALSB		0x1D

#define AAT2870_ALSC		0x1E

#define AAT2870_ALSD		0x1F

#define AAT2870_ALSE		0x20

#define AAT2870_ALSF		0x21

#define AAT2870_SUB_SET		0x22

#define AAT2870_SUB_CTRL	0x23

#define AAT2870_LDO_AB		0x24

#define AAT2870_LDO_CD		0x25

#define AAT2870_LDO_EN		0x26

#define AAT2870_REG_NUM		0x27

/* Device IDs */

enum aat2870_id {
	
AAT2870_ID_BL,
	
AAT2870_ID_LDOA,
	
AAT2870_ID_LDOB,
	
AAT2870_ID_LDOC,
	
AAT2870_ID_LDOD
};

/* Backlight channels */

#define AAT2870_BL_CH1		0x01

#define AAT2870_BL_CH2		0x02

#define AAT2870_BL_CH3		0x04

#define AAT2870_BL_CH4		0x08

#define AAT2870_BL_CH5		0x10

#define AAT2870_BL_CH6		0x20

#define AAT2870_BL_CH7		0x40

#define AAT2870_BL_CH8		0x80

#define AAT2870_BL_CH_ALL	0xFF

/* Backlight current magnitude (mA) */

enum aat2870_current {
	
AAT2870_CURRENT_0_45 = 1,
	
AAT2870_CURRENT_0_90,
	
AAT2870_CURRENT_1_80,
	
AAT2870_CURRENT_2_70,
	
AAT2870_CURRENT_3_60,
	
AAT2870_CURRENT_4_50,
	
AAT2870_CURRENT_5_40,
	
AAT2870_CURRENT_6_30,
	
AAT2870_CURRENT_7_20,
	
AAT2870_CURRENT_8_10,
	
AAT2870_CURRENT_9_00,
	
AAT2870_CURRENT_9_90,
	
AAT2870_CURRENT_10_8,
	
AAT2870_CURRENT_11_7,
	
AAT2870_CURRENT_12_6,
	
AAT2870_CURRENT_13_5,
	
AAT2870_CURRENT_14_4,
	
AAT2870_CURRENT_15_3,
	
AAT2870_CURRENT_16_2,
	
AAT2870_CURRENT_17_1,
	
AAT2870_CURRENT_18_0,
	
AAT2870_CURRENT_18_9,
	
AAT2870_CURRENT_19_8,
	
AAT2870_CURRENT_20_7,
	
AAT2870_CURRENT_21_6,
	
AAT2870_CURRENT_22_5,
	
AAT2870_CURRENT_23_4,
	
AAT2870_CURRENT_24_3,
	
AAT2870_CURRENT_25_2,
	
AAT2870_CURRENT_26_1,
	
AAT2870_CURRENT_27_0,
	
AAT2870_CURRENT_27_9
};


struct aat2870_register {
	
bool readable;
	
bool writeable;
	
u8 value;
};


struct aat2870_data {
	
struct device *dev;
	
struct i2c_client *client;

	
struct mutex io_lock;
	
struct aat2870_register *reg_cache; /* register cache */
	
int en_pin; /* enable GPIO pin (if < 0, ignore this value) */
	
bool is_enable;

	/* init and uninit for platform specified */
	
int (*init)(struct aat2870_data *aat2870);
	
void (*uninit)(struct aat2870_data *aat2870);

	/* i2c io funcntions */
	
int (*read)(struct aat2870_data *aat2870, u8 addr, u8 *val);
	
int (*write)(struct aat2870_data *aat2870, u8 addr, u8 val);
	
int (*update)(struct aat2870_data *aat2870, u8 addr, u8 mask, u8 val);

	/* for debugfs */
	
struct dentry *dentry_root;
	
struct dentry *dentry_reg;
};


struct aat2870_subdev_info {
	
int id;
	
const char *name;
	
void *platform_data;
};


struct aat2870_platform_data {
	
int en_pin; /* enable GPIO pin (if < 0, ignore this value) */

	
struct aat2870_subdev_info *subdevs;
	
int num_subdevs;

	/* init and uninit for platform specified */
	
int (*init)(struct aat2870_data *aat2870);
	
void (*uninit)(struct aat2870_data *aat2870);
};


struct aat2870_bl_platform_data {
	/* backlight channels, default is AAT2870_BL_CH_ALL */
	
int channels;
	/* backlight current magnitude, default is AAT2870_CURRENT_27_9 */
	
int max_current;
	/* maximum brightness, default is 255 */
	
int max_brightness;
};

#endif /* __LINUX_MFD_AAT2870_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Jin Park51599.61%150.00%
Axel Lin20.39%150.00%
Total517100.00%2100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.