summaryrefslogtreecommitdiffstats
path: root/src/soc/nvidia/tegra210/jdi_25x18_display/panel-jdi-lpm102a188a.h
blob: 9516a45df563562687c72738889165c508531dd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* SPDX-License-Identifier: GPL-2.0-only */
/* This file is part of the coreboot project. */

#ifndef _PANEL_JDI_LPM102A188A_H_
#define _PANEL_JDI_LPM102A188A_H_

#define LP8557_MAX_BRIGHTNESS				0xFFF;

#define LP8557_COMMAND					0x00
#define LP8557_COMMAND_ON				(1 << 0)

#define LP8557_BRIGHTNESS_LOW				0x03
#define LP8557_BRIGHTNESS_LOW_MASK(x)			(((x) & 0xF) << 4)

#define LP8557_BRIGHTNESS_HIGH				0x04
#define LP8557_BRIGHTNESS_HIGH_MASK(x)			(((x) & 0xFF0) >> 4)

enum lp8557_config_brightness_mode {
	LP8557_CONFIG_BRTMODE_PWM			= 0x0,
	LP8557_CONFIG_BRTMODE_REG,
	LP8557_CONFIG_BRTMODE_PWM_REG_SHAPE_PWM,
	LP8557_CONFIG_BRTMODE_PWM_REG_SHAPE_BRIGHTNESS,
	LP8557_CONFIG_BRTMODE_MAX,
};
#define LP8557_CONFIG					0x10
#define LP8557_CONFIG_BRTMODE(x)			(((x) & 0x3) << 0)
#define LP8557_CONFIG_AUTO_DETECT_LED			(1 << 2)
#define LP8557_CONFIG_PWM_STANDBY			(1 << 7)

enum lp8557_current {
	LP8557_CURRENT_5_MA				= 0x0,
	LP8557_CURRENT_10_MA,
	LP8557_CURRENT_13_MA,
	LP8557_CURRENT_15_MA,
	LP8557_CURRENT_18_MA,
	LP8557_CURRENT_20_MA,
	LP8557_CURRENT_23_MA,
	LP8557_CURRENT_25_MA,
	LP8557_CURRENT_MAX,
};
#define LP8557_CURRENT					0x11
#define LP8557_CURRENT_MAXCURR(x)			(((x) & 0x7) << 0)
#define LP8557_CURRENT_ISET				(1 << 7)

enum lp8557_pgen_frequency {
	LP8557_PGEN_FREQ_4_9_KHZ			= 0x0,
	LP8557_PGEN_FREQ_9_8_KHZ,
	LP8557_PGEN_FREQ_14_6_KHZ,
	LP8557_PGEN_FREQ_19_5_KHZ,
	LP8557_PGEN_FREQ_24_4_KHZ,
	LP8557_PGEN_FREQ_29_3_KHZ,
	LP8557_PGEN_FREQ_34_2_KHZ,
	LP8557_PGEN_FREQ_39_1_KHZ,
	LP8557_PGEN_FREQ_MAX,
};
#define LP8557_PGEN					0x12
#define LP8557_PGEN_FREQ(x)				(((x) & 0x7) << 0)
#define LP8557_PGEN_MAGIC				(5 << 3)
#define LP8557_PGEN_FSET				(1 << 7)

enum lp8557_boost_freq {
	LP8557_BOOST_FREQ_500_KHZ			= 0x0,
	LP8557_BOOST_FREQ_1_MHZ,
	LP8557_BOOST_FREQ_MAX,
};
enum lp8557_boost_bcomp {
	LP8557_BOOST_BCOMP_OPTION_0			= 0x0,
	LP8557_BOOST_BCOMP_OPTION_1,
	LP8557_BOOST_BCOMP_MAX,
};
#define LP8557_BOOST					0x13
#define LP8557_BOOST_FREQ(x)				(((x) & 0x1) << 0)
#define LP8557_BOOST_BCOMP(x)				(((x) & 0x1) << 1)
#define LP8557_BOOST_BCSET				(1 << 6)
#define LP8557_BOOST_BFSET				(1 << 7)

#define LP8557_LED_ENABLE				0x14
#define LP8557_LED_ENABLE_SINKS(x)			(((x) & 0x3F) << 0)
#define LP8557_LED_ENABLE_MAGIC				(2 << 6)

enum lp8557_step_ramp {
	LP8557_STEP_RAMP_0_MS				= 0x0,
	LP8557_STEP_RAMP_50_MS,
	LP8557_STEP_RAMP_100_MS,
	LP8557_STEP_RAMP_200_MS,
	LP8557_STEP_RAMP_MAX,
};
enum lp8557_step_smoothing {
	LP8557_STEP_SMOOTHING_NONE			= 0x0,
	LP8557_STEP_SMOOTHING_LIGHT,
	LP8557_STEP_SMOOTHING_MEDIUM,
	LP8557_STEP_SMOOTHING_HEAVY,
	LP8557_STEP_SMOOTHING_MAX,
};
#define LP8557_STEP					0x15
#define LP8557_STEP_RAMP(x)				(((x) & 0x3) << 0)
#define LP8557_STEP_SMOOTHING(x)			(((x) & 0x3) << 6)

struct mipi_dsi_device;
struct soc_nvidia_tegra210_config;

struct panel_jdi {
	struct mipi_dsi_device *dsi;
	const struct soc_nvidia_tegra210_config *mode;

	/* Physical size */
	unsigned int width_mm;
	unsigned int height_mm;

	int enabled;
};

struct panel_jdi *panel_jdi_dsi_probe(struct mipi_dsi_device *dsi);
int panel_jdi_prepare(struct panel_jdi *jdi);

#endif