62 lines
1.4 KiB
C
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
|