73 lines
1.5 KiB
C
73 lines
1.5 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2020 Rockchip Electronics Co., Ltd.
|
|
*
|
|
* Author: Zorro Liu <zorro.liu@rock-chips.com>
|
|
*/
|
|
|
|
#include <linux/slab.h>
|
|
#include <linux/device.h>
|
|
#include <linux/cdev.h>
|
|
#include <linux/fs.h>
|
|
#include <linux/io.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/firmware.h>
|
|
|
|
#include "../ebc_dev.h"
|
|
#include "epd_lut.h"
|
|
|
|
static int (*lut_get)(struct epd_lut_data *, enum epd_lut_type, int);
|
|
|
|
int epd_lut_from_mem_init(void *waveform)
|
|
{
|
|
int ret = -1;
|
|
|
|
ret = rkf_wf_input(waveform);
|
|
if (ret < 0) {
|
|
printk("[lut]: failed to input RKF waveform\n");
|
|
} else {
|
|
printk("[lut]: RKF waveform\n");
|
|
lut_get = rkf_wf_get_lut;
|
|
return 0;
|
|
}
|
|
|
|
ret = pvi_wf_input(waveform);
|
|
if (ret < 0) {
|
|
printk("[lut]: failed to input PVI waveform\n");
|
|
} else {
|
|
printk("[lut]: PVI waveform\n");
|
|
lut_get = pvi_wf_get_lut;
|
|
return 0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
int epd_lut_from_file_init(struct device *dev, void *waveform, int size)
|
|
{
|
|
const struct firmware *fw;
|
|
int ret;
|
|
|
|
ret = request_firmware_into_buf(&fw, "waveform.bin", dev, waveform, size);
|
|
if (ret) {
|
|
dev_err(dev, "failed to load waveform firmware: %d\n", ret);
|
|
return ret;
|
|
}
|
|
|
|
return epd_lut_from_mem_init(waveform);
|
|
}
|
|
|
|
const char *epd_lut_get_wf_version(void)
|
|
{
|
|
if (rkf_wf_get_version())
|
|
return rkf_wf_get_version();
|
|
if (pvi_wf_get_version())
|
|
return pvi_wf_get_version();
|
|
return NULL;
|
|
}
|
|
|
|
int epd_lut_get(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture)
|
|
{
|
|
return lut_get(output, lut_type, temperture);
|
|
}
|