tegrakernel/kernel/kernel-4.9/drivers/video/backlight/lp88xx.h

62 lines
1.4 KiB
C

/*
* TI LP88XX Backlight Core Driver
*
* Copyright 2016 Texas Instruments
*
* Copyright (c) 2017, NVIDIA CORPORATION, All rights reserved.
*
* 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.
*/
#ifndef __BL_LP88XX_H
#define __BL_LP88XX_H
#include <linux/pwm.h>
#include <drm/drm_fixed.h>
#define EEPROM_NUM_ADDR 22
#define LP88XX_NUM_REGIONS 6
#define LP88XX_NUM_BRT_LEVELS 6
enum lp88xx_chip_id {
LP8580,
LP88XX,
};
struct lp88xx_io {
int (*write)(void *p, u16 reg, u16 val);
int (*read)(void *p, u16 reg, u16 *val);
};
struct eeprom_datum {
u16 addr;
u16 val;
};
struct lp88xx {
struct device *dev;
void *priv;
struct lp88xx_io io;
unsigned long region_used; /* Bit mask for LED region map */
struct pwm_device *pwm;
unsigned int period;
u16 max_dev_brt;
struct eeprom_datum default_eeprom[EEPROM_NUM_ADDR];
int eeprom_count;
int led_strings_used; /* Number of LED strings used */
u32 max_input_brt;
u16 brt_levels[LP88XX_NUM_BRT_LEVELS]; /* Brightness levels */
u32 pwm_settle_time_int; /* settle time in pwm clock ticks */
u32 pwm_flash_time_int; /* flash time in pwm clock tickcs */
u32 frame_duration_ms;
enum lp88xx_chip_id chip_id;
bool eeprom_lock;
bool nvsr_lock;
bool low_persistence;
};
extern int lp88xx_common_probe(struct device *dev, struct lp88xx *lp);
#endif