blob: 891f732b0318857f9bcebf7707ffdf9bce9aa6b4 [file] [log] [blame]
/*
* linux/drivers/gpu/exynos/hdr_tunables.c
*
* Copyright (C) 2017 Samsung Electronics Co., Ltd.
*
* 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.
*/
#include <linux/module.h>
#include <linux/stat.h>
#include <video/exynos_hdr_tunables.h>
static unsigned int nr_tm_lut_x_values = NR_TM_LUT_VALUES;
static unsigned int nr_tm_lut_y_values = NR_TM_LUT_VALUES;
static uint tm_lut_x[NR_TM_LUT_VALUES];
static uint tm_lut_y[NR_TM_LUT_VALUES];
static uint tm_override_enable;
int exynos_hdr_get_tm_lut_xy(u32 lut_x[], u32 lut_y[])
{
int i;
if (!tm_override_enable)
return 0;
for (i = 0; i < nr_tm_lut_x_values; i++)
lut_x[i] = tm_lut_x[i] & 0x3FFF;
for (; i < NR_TM_LUT_VALUES; i++)
lut_x[i] = 0;
for (i = 0; i < nr_tm_lut_y_values; i++)
lut_y[i] = tm_lut_y[i] & 0xFFF;
for (; i < NR_TM_LUT_VALUES; i++)
lut_y[i] = 0;
return NR_TM_LUT_VALUES;
}
int exynos_hdr_get_tm_lut(u32 lut[])
{
int i = 0;
if (!tm_override_enable)
return 0;
for (i = 0; i < nr_tm_lut_x_values; i++)
lut[i] = tm_lut_x[i] & 0x3FFF;
for (; i < NR_TM_LUT_VALUES; i++)
lut[i] = 0;
for (i = 0; i < nr_tm_lut_y_values; i++)
lut[i] |= (tm_lut_y[i] & 0xFFF) << 16;
return NR_TM_LUT_VALUES;
}
module_param_array(tm_lut_x, uint, &nr_tm_lut_x_values, 0644);
module_param_array(tm_lut_y, uint, &nr_tm_lut_y_values, 0644);
module_param(tm_override_enable, uint, 0644);